我正在尝试使用DFS算法来计算每个节点与源节点的距离。目前它为源顶点输出0的距离,但是对于所有其他顶点输出1,即使应该有一对距离为2.DFS中的printf打印出正确的顺序,首先是源,然后是距离为1然后距离为2的顶点。因此算法中我需要将距离增加。
void dfs(int vertex1) {
graph[vertex1-1].visited = 1;
printf("%d \n",vertex1);
struct edge *e;
e = graph[vertex1-1].edgePtr;
while (e) {
if (!(graph[e->vertexIndex - 1].visited)){
graph[e->vertexIndex - 1].distance++;
dfs(e->vertexIndex);
}
e = e->edgePtr;
}
}
答案 0 :(得分:0)
我想我找到了一种让DFS计算距离的方法,它是正确的,除了最后一个顶点发现它说距离是3而不是2。
<div class="wrapper">
<div class="content"></div>
</div>