码迷,mamicode.com
首页 > 其他好文 > 详细

求树的直径

时间:2018-07-13 22:17:46      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:queue   front   开始   tin   pos   nbsp   code   max   长度   

两遍bfs即可

分析:一开始任取一个点u进行搜索查找出距离点u最远距离的点v和长度

      第二次dfs则从第一次中的v找出距离点v最远距离的点的路径长度

void bfs(int u)
{
    queue<int> Q;
    mem(d, 0);
    mem(vis, 0);
    Q.push(u);
    d[u] = 0;
    vis[u] = 1;
    maxway = 0, pos = u;
    while(!Q.empty())
    {
        u = Q.front(); Q.pop();
        for(int i=head[u]; i != -1; i=Edge2[i].next)
        {
            int v = Edge2[i].v;
            if(vis[v]) continue;
            vis[v] = 1;
            d[v] = d[u] + 1;
            if(d[v] > maxway)
                maxway = d[v], pos = v;
            Q.push(v);
        }
    }
}

int main()
{
    bfs(1);
    bfs(pos);
    return 0;
}

 

求树的直径

标签:queue   front   开始   tin   pos   nbsp   code   max   长度   

原文地址:https://www.cnblogs.com/WTSRUVF/p/9307517.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!