23.3.8打卡 AcWing 1072. 树的最长路径 树形dp

news/2024/7/20 20:02:49 标签: 深度优先, 算法, 树形dp

AcWing 1072. 树的最长路径

题目链接: https://www.acwing.com/problem/content/1074/

听y总的课听睡着了, 直接看的题解琢磨了下, 感觉挺简单的

题意

给你一棵树, 找到这棵树的最长路径

题解

先说屁话, 感觉能用最长路写, 最短路改改就好了
当然这是个树形dp的模板题这里讲解树形dp的做法
与其说是树形dp, 我觉得更像是dfs遍历了一遍树而已, 感觉没什么状态转移的特点在里面

直接讲dfs的过程, 存图用前向星, 前向星的基础知识就不讲了
因为是树的最长路径, 所以中间不能断开(废话)
所以对于每个子节点, 必须和他的父亲节点相连, 我们要找的是最长路径, 从根节点开始搜的话需要找到距离根节点最长和次长的路径
在每次dfs时, 遍历此节点的所有儿子, 获取其儿子到叶子结点的最长路径, 每次遍历都更新维护一个最长路径和次长路径
当dfs回到根节点时, 此时维护的最长路径和次长路径就是叶子结点到达根节点的路径
整理一下输出最大值(是最长路径和次长路径的最大值)即可
注意最后一个最长路径和次长路径的和不一定是最大的
因为最长路径不一定会经过根节点!!!

ll cnt,n,m,t,ans,ant;
const int N=1e4+10;
const int INF=0x3f3f3f3f;
const ll llINF=0x3f3f3f3f3f3f3f3f;
ll h[N],e[N*2],w[N*2],ne[N*2],idx;
string str;

void add(ll a,ll b,ll c)
{
    w[idx]=c;
    e[idx]=b;
    ne[idx]=h[a];
    h[a]=idx++;
}

ll dfs(ll u,ll fa)//当前节点和父节点
{
    ll dist=0;
    ll d1=0,d2=0;//最长路和次长路

    for(ll i=h[u];i!=-1;i=ne[i])
    {
        ll j=e[i];
        if(j==fa) continue;
        ll d=dfs(j,u)+w[i];//路径总长度
        dist=max(dist,d);//路径最大值
        if(d>=d1) 
        {
            d2=d1;
            d1=d;
        }else d2=max(d,d2);
    }

    ans=max(ans,d1+d2);
    return dist;
}

void solve()
{
    memset(h,-1,sizeof h);
    cin>>n;
    repr(i,1,n)
    {
        ll a,b,w;
        cin>>a>>b>>w;
        add(a,b,w);
        add(b,a,w);//无向边
    }
    
    dfs(1,-1);
    cout<<ans<<endl;
    
    return;
}

http://www.niftyadmin.cn/n/132847.html

相关文章

螯合剂p-SCN-Bn-TCMC,282097-63-6,双功能配体化合物应用于光学成像应用

p-SCN-Bn-TCMC 反应特点&#xff1a;p-SCN-Bn-TCMC属于双功能配体是螯合剂&#xff0c;也具有共价连接到生物靶向载体&#xff08;如抗体、肽和蛋白质&#xff09;的反应位点。应用于核医学、MRI和光学成像应用。西安凯新生物科技有限公司供应的杂环化合物及其衍生物可制作为具…

DJ1-2 操作系统引论

目录 一、操作系统的发展过程 1. 无操作系统 2. 单道批处理系统 3. 多道批处理系统 4. 分时操作系统 5. 实时系统 二、操作系统的基本特征 1. 并发性 2. 共享性 3. 虚拟性 4. 异步性 三、操作系统的主要功能 1. 处理机管理功能 2. 存储器管理功能 3. 设备管理功…

Mysql常见的函数介绍

Mysql查询示例简介一、创建计算字段二、使用数据处理函数1. 文本处理函数2. 日期和时间处理函数3. 数值处理函数三、聚集函数总结简介 本篇博客中介绍了mysql查询时&#xff0c;常用的一些函数&#xff0c;融会贯通这些函数的使用&#xff0c;会对工作和学习有很大的帮助&#…

网络原理之传输层协议,TCP中的主要核心机制(重点)

目录 一. 传输层中的端口号 二. UDP协议 三. TCP协议 四. TCP中的核心机制 1. 确认应答 2. 超时重传 3. 连接管理 建立连接(三次握手) 断开连接(四次挥手) 4. 滑动窗口 考虑丢包情况1&#xff1a;ack丢了 考虑丢包情况2&#xff1a;数据丢了 5. 流量控制 6. 拥塞…

在CentOS7上静默安装Oracle19c

1.下载Oracle 官方安装包下载路径&#xff08;需要登录Oracle账号&#xff09;&#xff1a; https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c 可选择windows/Linux平台对应的安装包&#xff0c;我选择Linux x86-64、ZIP包下载&…

计算机网络的166个概念你知道几个 第十一部分

计算机网络数据链路层和物理层节点&#xff1a;一般指链路层协议中的设备。链路&#xff1a;一般把沿着通信路径连接相邻节点的通信信道称为链路。MAC 协议&#xff1a;媒体访问控制协议&#xff0c;它规定了帧在链路上传输的规则。奇偶校验位&#xff1a;一种差错检测方式&…

质量小议20 -- 极端斯坦

平均斯坦&#xff1a;当你的样本量足够大时&#xff0c;任何个例都不会对整体产生重大影响。 极端斯坦&#xff1a;个体能够轻易地以不成比例的方式影响整体&#xff0c;黑天鹅。 在平均斯坦&#xff0c;我们受到集体事件、常规事件、已知事件和已预测到的事件的统治。 …

指定作为网关,它就成为网关了么之二---主机指定自身IP作为默认网关

指定作为网关&#xff0c;它就成为网关了么之二~~~主机指定自身IP作为默认网关&#xff1f; 简单来看&#xff0c;如果Linux主机自己指定自己的某张网卡上IP作为默认网关&#xff0c;虽然是一个非常奇怪的配置招数&#xff0c;但是&#xff0c;它的实效却为允许从这个网卡对任何…