2017-02-11 90 views
0

如何查找并保存从特定节点到图中所有其他节点的距离。请注意,图是非循环的。
在加权图中找到从节点到所有其他节点的距离

这是我开始使用的代码。我传递一个顶点,访问数组,两个节点之间的距离矩阵,它最初设置为0,
,并且dist应该跟踪当前节点距离根节点多远,我给出了作为目标的

我使用DFS,每次我到下一个节点时,我将它们之间的距离与前面的
之间的距离相加,并将它作为参数传递给下一个连接(如果存在)。
请帮我完成它。

void DFSUtil(int v,boolean visited[],ArrayList<ArrayList<Integer>> distanceMatrix,int dist,int targ) 
    { 
     // Mark the current node as visited and print it 
     visited[v]=true; 
     System.out.print(v+" "); 


     // Recur for all the vertices adjacent to this vertex 
     Iterator<Integer> i = adj[v].listIterator(); 

     while (i.hasNext()) 
     { 
      int n = i.next(); 

      if (!visited[n]){ 
       /* dist += distanceMatrix.get(v).get(n); 
       System.out.println("cur:"+v+" next:"+n+"\ndistMatrix:"+distanceMatrix.get(v).get(n)+"dist:"+dist); 

       distanceMatrix.get(targ).set(n,dist); 
       distanceMatrix.get(n).set(targ,dist); 
       System.out.println(distanceMatrix); 
       System.out.println();*/ 
       DFSUtil(n, visited,distanceMatrix,dist,targ); 
      } 
     } 
     //remove dist from root to this node 
    } 
+1

为什么你不只是使用Dijkstra算法? – beaker

+0

Bellman Ford https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm适合一个来源和所有目的地。如果图形密集,Floyd-Warshall具有相同的效率,否则BF渐近地更快。 – Gene

回答

0

我假设你的意思是一个有向无环图。 Dijkstra可以用在O(E + VlogV)中运行。

相关问题