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); }