使用DFS计算与源节点的距离

时间:2016-03-10 00:40:09

标签: c graph-theory adjacency-list

我正在尝试使用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;
    }
}

1 个答案:

答案 0 :(得分:0)

我想我找到了一种让DFS计算距离的方法,它是正确的,除了最后一个顶点发现它说距离是3而不是2。

<div class="wrapper">
  <div class="content"></div>
</div>