Example #1
0
        public override List <Edge> Find(int vamount, List <Edge> edges)
        {
            int i = 0;

            Cost = 0;
            List <Edge> result = new List <Edge>();

            edges.Sort();

            for (i = 0; i < vamount; i++)
            {
                dsf.Set(i);
            }

            foreach (Edge edge in edges)
            {
                int left   = edge.leftEdge;
                int right  = edge.rightEdge;
                var weight = edge.weightOfEdge;
                if (dsf.Find(left) == dsf.Find(right))
                {
                    continue;
                }
                Cost += weight;
                result.Add(new Edge(left, right, 0));
                dsf.Union(left, right);
            }

            return(result);
        }