private void Visit(int i) { distTo[i] = 0; ipq.Insert(i, distTo[i]); while (!ipq.IsEmpty()) { int j = ipq.DeleteMin(); Proccess(j); } }
public double GetMst() { double Sum = 0; IndexedPQ.Insert(0, 0); while (!IndexedPQ.IsEmpty()) { int j = IndexedPQ.DeleteMin(); minimumindex = j; Visited[j] = true; for (int v = 0; v < NumOfVertices; ++v) { if (Visited[v]) { continue; } double edgeWeight = MathUtilities.GetDistance(j, v); if (edgeWeight < Destination[v]) { Destination[v] = edgeWeight; Nodes[v] = minimumindex; Edge_To[v] = new Edge(edgeWeight, j, v); if (IndexedPQ.Contains(v)) { IndexedPQ.DecreaseKey(v, Destination[v]); } else { IndexedPQ.Insert(v, Destination[v]); } } } } for (int i = 0; i < Edge_To.Count(); ++i) { Sum += Edge_To[i].Weight; } return(Sum); }