zoukankan      html  css  js  c++  java
  • 求树的直径

    两遍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;
    }
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    HashMap的理解
    红黑树
    No constructor found matching
    会话 控制终端 setsid
    信息表示和处理 from computer system chapter 2
    tcp keepalive
    TCP 四步挥手
    CS 课程
    close vs shutdown socket
    Linux time总结
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/9307517.html
Copyright © 2011-2022 走看看