考虑没有周期的有向图。我需要找到
u
每个u
可从u
到达的边的总重量(我们的意思是指v
到f[v] = f[u] + w(u,v)
的路径。< / p>
现在,我想到的是运行拓扑排序然后开始从最后一个节点运行到第一个节点(可能通过交换边缘的方向)
然后我们正在评估f[d]
。
但是有问题;对于此图表,我们将计算Sub Test()
Dim a As Boolean
Dim b As Boolean
a = True And 1 And 2 ' a = false
b = True And 2 And 3 ' b = true
MsgBox (a)
MsgBox (b)
End Sub
两次。我怎么能克服这个?
答案 0 :(得分:2)
您可以使用BFS或DFS来实现此目的。
UIPageViewController
请注意,我们会在total = 0
dfs (node):
if visited[node] == 1:
return
visited[node] = 1
for all u connected to node:
total += weight[node][u]
dfs(u)
之后检查被访问者。
答案 1 :(得分:1)
您可以使用自下而上的方法。首先计算每个顶点的outdegree,现在具有0 outdegree的顶点对于它们将具有F [u] = 0。现在将所有这些顶点添加到队列Q中 你还需要存储Graph的转置,假设它是T。
While(!Q.empty){
u=Q.front();
Q.pop();
for all edges E originating from T[u]{
F[v]+=w; (where (u,v) was the edge with w as weight)
//now remove u from the graph
outdegree[v]--;
if(outdegree[v]==0)
Q.push(v);
}
}