예제 #1
0
 public DijkstraSP(EdgeWeightDirectedGraph g, int s)
 {
     m_edgeTo = new DirectedEdge[g.V()];
     m_distTo = new double[g.V()];
     m_pq     = new IndexMinHeap <double>(g.V());
     for (int v = 0; v < g.V(); ++v)
     {
         m_distTo[v] = Double.PositiveInfinity;
     }
     m_distTo[s] = 0;
     m_pq.insert(s, 0);
     while (!m_pq.isEmpty())
     {
         Relax(g, m_pq.delMin());
     }
 }
    public PrimMST(EdgeWeightedGraph g)
    {
        m_edgeTo = new Edge[g.V()];
        m_distTo = new double[g.V()];
        m_marked = new bool[g.V()];
        for (int v = 0; v < g.V(); ++v)
        {
            m_distTo[v] = Double.PositiveInfinity;
        }
        m_pq = new IndexMinHeap <double>(g.V());

        m_distTo[0] = 0.0d;
        m_pq.insert(0, 0.0d);
        while (!m_pq.isEmpty())
        {
            Visit(g, m_pq.delMin());
        }
    }