美文网首页
树的直径问题

树的直径问题

作者: 陌路晨曦 | 来源:发表于2017-08-02 16:56 被阅读0次

我先整理一下吧,不整理的话搞不好过两天我自己都忘了
树的直径是指一颗树上距离最远的两个点之间的距离。也叫树的最长路
树的直径是指树的最长简单路。
求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为树的直径;

原理: 设起点为u,第一次BFS找到的终点v一定是树的直径的一个端点

证明:

  1. 如果u 是直径上的点,则v显然是直径的终点(因为如果v不是的话,则必定存在另一个点w使得u到w的距离更长,则于BFS找到了v矛盾)
  2. 如果u不是直径上的点,则u到v必然于树的直径相交(反证),那么交点到v 必然就是直径的后半段了
    所以v一定是直径的一个端点,所以从v进行BFS得到的一定是直径长度
    bfs写法
LL d[2][maxn];
queue<int > Q;
int bfs(int u,int idx)   //树的直径
{
    memset(d[idx],-1,sizeof(d[idx]));
    while(!Q.empty()) Q.pop();
    d[idx][u] = 0;
    Q.push(u);
    while(!Q.empty())
    {
        int u = Q.front();
        Q.pop();
        for(int i = hd2[u];~i;i = e[i].next)
        {
            if(d[idx][e[i].v]==-1)
            {
                d[idx][e[i].v] = d[idx][u] + e[i].w;
                Q.push(e[i].v);
            }
        }
    }
    LL ret = -1;
    int id = 0;
    for(int i=1;i<=cnt;i++)
        if(ret < d[idx][i]) ret = d[idx][id = i];
    return id;
}

dfs写法

void TreeDia(int u,int pre,int len)
{
    if(len > max_len) st = u,max_len = len;
    for(int i=0;i<g[u].size();i++)
    {
        int v = g[u][i].v;
        if(v==pre)  continue;
        TreeDia(v,u,len+g[u][i].w);
    }
}

还是dfs好写o((>ω< ))o

相关文章

  • 树的直径问题

    我先整理一下吧,不整理的话搞不好过两天我自己都忘了树的直径是指一颗树上距离最远的两个点之间的距离。也叫树的最长路树...

  • 树的直径

    地点 解释 :求树的最长路(树的直径)首先假设树的最长路的两个叶子节点为v1,v2,那么现有结论,从任意一点u出发...

  • 树的直径

    0X00 如何找树的直径 0X01 证明 acwing 树形 dp

  • 树-图的直径

    定义 所有点 距离最远的点 是直径的两个端点之一两次求解最远可以求解到A,B 当然答案不唯一一次求解的 反例A|...

  • 二叉树的直径

    问题1 二叉树的最大直径 原理 首先,需要定义一个变量记录二叉树的直径 其次,递归遍历,找到每一层二叉树的 递归的...

  • 算法模板(五)树基础算法

    最小生成树 求树的直径 求树的重心

  • 2018-03-10 求二叉树直径

    二叉树的直径就是任意两点之间的最大距离。图中直径为[4,2,1,3]。 可以看到,图中的树直径为4到3之间的距离,...

  • 树的直径求解方法与证明

    1. 问题描述 给定一棵树,求树中最长的路径的长度,也就是树的直径; 该树的节点数为 ,编号为 ; 定义树中某一个...

  • 2020-03-10 刷题1(二叉树的直径)

    543 二叉树的直径 对于根节点r,它的直径无非有三种可能:左子树的直径,右子树的直径,已经左右子树高度之和。所以...

  • 二叉树求直径

    给定一个二叉树,写代码传入根节点后求出直径?二叉树的直径是任意两个节点之间的最远距离。 如上面二叉树的直径为:3....

网友评论

      本文标题:树的直径问题

      本文链接:https://www.haomeiwen.com/subject/buzhlxtx.html