news 2026/6/15 12:10:49

P1131题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
P1131题解

问题:
有一个树形结构的电路板,其中有一个激发器(根节点),电流从根节点出发,沿着树边传播到所有叶子节点(终止节点)。每条边有一个传播时间,我们需要通过增加某些边的传播时间,使得所有叶子节点同时接收到电流。
解法:
贪心:
从叶子节点开始向上处理
对于每个节点,计算从其到其子树中叶子节点的最大路径长度
对于节点的每个子节点,将它们的路径长度补齐到这个最大值
向上传递时,加上当前节点到父节点的边权
算法:
使用BFS或DFS建立树结构(因为N很大,需要避免递归深度过大)
通过拓扑排序(从叶子到根)处理节点
对于每个节点:
找到所有子节点中的最大f[y]+w(即最大路径长度)
将所有子节点的路径长度补齐到这个最大值
当前节点的f[x]=这个最大值
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=500010;
int h[N],v[N<<1],nxt[N<<1],cnt,d[N<<1];
long long res,f[N];
int q[N],fa[N];
void add(int x,int y,int z)
{
v[++cnt]=y;
d[cnt]=z;
nxt[cnt]=h[x];
h[x]=cnt;
}
int main()
{
int n,st;
scanf("%d%d",&n,&st);

for(int i=1;i<n;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
int l=0,r=0;
q[0]=st;
fa[st]=0;
while(l<=r)
{
int x=q[l++];
for(int i=h[x];i;i=nxt[i])
{
int y=v[i];
if(y==fa[x]) continue;
fa[y]=x;
q[++r]=y;
}
}
for(int i=r;i>=0;i--)
{
int x=q[i];
long long mx=0;
for(int j=h[x];j;j=nxt[j])
{
int y=v[j],w=d[j];
if(y==fa[x]) continue;
f[x]=max(f[x],f[y]+w);
}
for(int j=h[x];j;j=nxt[j])
{
int y=v[j],w=d[j];
if(y==fa[x]) continue;
res+=f[x]-(f[y]+w);
}
}
printf("%lld\n",res);
return 0;
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 5:57:45

Linux权限管理知识点

一、文件权限管理主要学习一下三大权限Linux系统的三大基本权限Linux系统的三大特殊权限Linux系统的精细化权限管理ACL权限问题&#xff1a;为什么需要文件权限&#xff1f;&#xff1f;&#xff1f;答&#xff1a;因为没有文件权限控制&#xff0c;则系统所有人都可以查看和修…

作者头像 李华
网站建设 2026/6/14 18:17:22

Java+Playwright自动化测试-31- 操作日历时间控件-上篇(详细教程)

我们在实际工作或者生活中&#xff0c;有可能遇到有些web产品&#xff0c;网页上有一些时间选择&#xff0c;然后支持按照不同时间段范围去筛选数据&#xff0c;例如&#xff1a;我们预定火车票或者预定酒店&#xff0c;需要选择发车日期或者酒店的入住与退房时间。宏哥早在之前…

作者头像 李华
网站建设 2026/6/14 0:35:06

周报不是流水账,这个AI指令帮你写出让老板点赞的工作汇报

写在前面每周五下午&#xff0c;看到"本周工作总结"的提醒&#xff0c;是不是就头疼&#xff1f;明明忙了一周&#xff0c;但真要写周报时&#xff0c;脑子里一片空白。想了半天只憋出几句话&#xff1a;"本周完成了XX功能开发&#xff0c;测试通过&#xff0c;…

作者头像 李华
网站建设 2026/6/2 14:01:48

Revive Adserver:开源广告服务器系统完整指南

在当今数字营销时代&#xff0c;拥有一个强大的广告管理系统对于网站所有者至关重要。Revive Adserver作为全球最受欢迎的免费开源广告服务器系统&#xff0c;为各类用户提供了一套完整的解决方案&#xff0c;无论是小型企业还是大型媒体公司&#xff0c;都能从中受益。&#x…

作者头像 李华
网站建设 2026/6/15 6:23:42

【Qt开源项目】— ModbusScope-day 1

学习核心思想 笔记驱动&#xff1a;以你手中的笔记为核心路线图和知识库&#xff0c;避免在浩瀚源码中迷失。问题导向&#xff1a;每学习一个模块&#xff0c;先问自己&#xff1a;它为什么存在&#xff1f;解决了什么问题&#xff1f;在整体中扮演什么角色&#xff1f;流程串联…

作者头像 李华