(来源,目的地)及其类型(树,后,前,交)?
答案 0 :(得分:2)
你走了。 Java中的代码
EmpSys
答案 1 :(得分:0)
好问题。
这是基于the source you posted as comment的解决方案。 重要提示:开始/结束表上有错误,第三行第三列应为“end [u]< end [v]”而不是“end [u]> end [v]”
void main(G, s){
for each node v in G{
explored[v]=false
parent[v]=null
start[v]=end[v]=null
}
Global clock = 0
DFS(G, s, s)
}
void DFS(G, s, parent){
explored[s] = true;
parent[s] = parent
start[s]=clock
clock++
for each u=(s,v){
if(explored[v] == false){
DFS(G, v)
}
print (s + "-->" + v +"type: " + getType(s,v))
}
end[s]=clock
clock++
}
String getType(s, v){
if(start[s]<start[v]){
if(end[s]>end[v]) return "Tree edge"
else return "Forward edge"
else{
if(end[s]<end[v]) return "Back edge"
else return "Cross edge"
}
}