使用BFS从给定顶点及其距离找到距离最远的顶点

时间:2015-11-24 09:18:05

标签: c++ graph breadth-first-search

指令:找到离v最远的顶点。如果有多个这样的顶点,则返回索引最小的顶点。 假设输入图已连接。 返回由最远的顶点及其距离v

组成的对

请给我一些建议如何修改BFS以便我可以解决此任务。 感谢。

pair<int, int> Graph::findFarthestVertex(int v)
{
    int farthest = v;
    int maxdist = 0;
    int n = this->getVerticesCount();

    if(n==1)
    {
        farthest=0;
        maxdist=0;
        return pair<int, int>(farthest, maxdist);
    }

    int* visited = new int[n];
    queue<int> q;

    for(int i=0; i<n; ++i)
        visited[i]=0;

    q.push(v);
    visited[v]=1;

    while(q.empty()==false)
    {
        int elem = q.front();
        q.pop();

        for(int i=0; i<getNeighbors(elem).size(); ++i)
        {
            if(visited[elem]==0)
            {
                q.push(elem);
                visited[elem]=1;
            }

        }

    }

    return pair<int, int>(farthest, maxdist);
}

0 个答案:

没有答案