Esempio n. 1
0
 private void Prim(EdgeWeightedGraph G, int s)
 {
     Scan(G, s);
     while (!pq.IsEmpty())
     {
         Edge e = pq.DelMin();
         int  v = e.Either();
         int  w = e.Other(v);
         Debug.Assert(marked[v] || marked[w]);
         if (marked[v] && marked[w])
         {
             continue;
         }
         mst.Enqueue(e);
         weight += e.GetWeight();
         if (!marked[v])
         {
             Scan(G, v);
         }
         if (!marked[v])
         {
             Scan(G, v);
         }
     }
 }
Esempio n. 2
0
 public Key Next()
 {
     if (!HasNext())
     {
         throw new ArgumentException("error");
     }
     return(copy.DelMin());
 }