public override IndexPQBase <TKey> Clone()
        {
            var copy = new IndexMinPQ <TKey>(n + 1);

            for (int i = 1; i <= n; i++)
            {
                copy.Insert(pq[i], keys[pq[i]]);
            }
            return(copy);
        }
Ejemplo n.º 2
0
        /**
         * Compute a minimum spanning tree (or forest) of an edge-weighted graph.
         * @param G the edge-weighted graph
         */
        public EagerPrimMST(EdgeWeightedGraph G)
        {
            edgeTo = new Edge[G.V];
            distTo = new double[G.V];
            marked = new bool[G.V];
            pq     = new IndexMinPQ <Double>(G.V);
            for (int v = 0; v < G.V; distTo[v++] = Double.MaxValue)
            {
                ;
            }


            for (int v = 0; v < G.V; v++) // run from each vertex to Find
            {
                if (!marked[v])
                {
                    prim(G, v);          // minimum spanning forest
                }
            }
            // check optimality conditions
            // assert check(G);
            Contract.Assert(check(G));
        }