洛谷 P6419:[COCI 2014/2015 #1] Kamp ← 换根DP

news/2026/1/19 23:15:38/文章来源:https://www.cnblogs.com/triwa/p/19503960

【题目来源】
https://www.luogu.com.cn/problem/P6419

【题目描述】
一棵树 n 个点,n-1 条边,经过每条边都要花费一定的时间,任意两个点都是联通的。
有 K 个人(分布在 K 个不同的点)要集中到一个点举行聚会。
聚会结束后需要一辆车从举行聚会的这点出发,先让所有人都上车,再把这 K 个人分别送回去。请你回答,对于 i=1~n,如果在第 i 个点举行聚会,司机最少需要多少时间把 K 个人都送回家。

【输入格式】
第一行两个整数 n,K。
接下来 n-1 行,每行三个数 x,y,z 表示 x 到 y 之间有一条需要花费z时间的边。
接下来 K 行,每行一个数,表示 K 个人的分布。

【输出格式】
输出 n 个数。
第 i 行的数表示:如果在第 i 个点举行聚会,司机需要的最少时间。

【输入样例一】
7 2
1 2 4
1 3 1
2 5 1
2 4 2
4 7 3
4 6 2
3
7

【输出样例一】
11
15
10
13
16
15
10

【输入样例二】
5 2
2 5 1
2 4 1
1 2 2
1 3 2
4
5

【输出样例二】
5
3
7
2
2

【数据范围】
对于 50% 的数据,保证n≤2×10^3。
对于 100% 的数据,1≤K≤n<5×10^5,1≤x, y≤n,1≤z≤10^8。

【算法分析】
● 快读:https://blog.csdn.net/hnjzsyjyj/article/details/120131534

int read() { //fast readint x=0,f=1;char c=getchar();while(c<'0' || c>'9') { //!isdigit(c)if(c=='-') f=-1;c=getchar();}while(c>='0' && c<='9') { //isdigit(c)x=x*10+c-'0';c=getchar();}return x*f;
}

本题可以不用“快读”,也可以使用 scanf 完成输入。

● 链式前向星:https://blog.csdn.net/hnjzsyjyj/article/details/139369904

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

大佬 yxc 指出“链式前向星”就是“多单链表”,每条单链表基于“头插法”并用 e[]、ne[]、h[] 、val[] 等数组进行模拟创建。其中:
e[idx]:存储序号为 idx 的边的终点值
ne[idx]:存储序号为 idx 的边指向的边的序号(模拟链表指针)‌
h[a]:存储头结点 a 指向的边的序号
val[idx]:存储序号为 idx 的边的权值(可选)

【算法代码】

#include <bits/stdc++.h>
using namespace std;typedef long long LL;
const int N=5e5+5;int val[N<<1],e[N<<1],ne[N<<1],h[N],idx=1;
void add(int a,int b,int w) {val[idx]=w,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}bool st[N]; //st[u] indicates whether u is a key point
int siz[N]; //siz[u] represents critical points'num in the subtree of node u
LL f[N]; //f[u] stores total path length for all key points from u
LL g[N]; //g[u] stores double sum of edge weights within the subtree of u
LL up[N]; //up[u] stores the maximum distance from u above it
LL down[N]; //down[u] stores the maximum distance from u under it
LL secd[N]; //secd[u] stores the secondary distance from u under it
int n,k;void dfs(int u,int fa)  {siz[u]=st[u];for(int i=h[u]; i!=-1; i=ne[i]) {int j=e[i];LL w=val[i];if(j==fa) continue;dfs(j,u);siz[u]+=siz[j];if(siz[j]) {g[u]+=g[j]+2*w;if(down[j]+w>down[u]) {secd[u]=down[u];down[u]=down[j]+w;} else if(down[j]+w>secd[u]) {secd[u]=down[j]+w;}}}
}void dfs(int u,int fa,LL w) {if(siz[u]==k) {f[u]=g[u];up[u]=0;} else if(siz[u]==0) {f[u]=f[fa]+2*w;up[u]=max(up[fa],down[fa])+w;} else {f[u]=f[fa];if(down[fa]-down[u]==w) {up[u]=max(up[fa],secd[fa])+w;} else up[u]=max(up[fa],down[fa])+w;}for(int i=h[u]; i!=-1; i=ne[i]) {int v=e[i];LL w=val[i];if(v==fa) continue;dfs(v,u,w);}
}int main() {memset(h,-1,sizeof h);cin>>n>>k;for(int i=1; i<n; i++) {int u,v;LL w;scanf("%d%d%lld",&u,&v,&w);add(u,v,w);add(v,u,w);}for(int i=1; i<=k; i++) {int x;scanf("%d",&x);st[x]=true;}dfs(1,0);dfs(1,0,0);for(int i=1; i<=n; i++) {printf("%lld\n",f[i]-max(up[i],down[i]));}return 0;
}/*
in:
5 2
2 5 1
2 4 1
1 2 2
1 3 2
4
5out:
5
3
7
2
2
*/





【参考文献】
https://mp.weixin.qq.com/s/31CNyn19e8lPO5_eZNbDEg
https://www.luogu.com.cn/problem/solution/P6419
https://mp.weixin.qq.com/s/IgdddPqM4jPcI720P0q3kw
https://mp.weixin.qq.com/s/mRLIdTgHGPpBVuZAfSfe6w
https://mp.weixin.qq.com/s/Ulg9GIl0u2Qgh45FnC9OMg

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1185592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于人工智能的智能客服系统设计与实现 #计算机毕业设计 毕设 论文 开题报告

博主介绍 本人程序员一枚&#xff0c;从2017年从事开发行业到现在&#xff0c;我们可以从最初的java,ssm,jsp&#xff0c;发展到现在的spring boot vue框架&#xff0c;随着python的崛起&#xff0c;又融入了django、flask框架的web式开发&#xff0c;一步一步走到现在&#x…

深度学习毕设项目推荐-基于人工智能python-CNN深度学习识别猫脸

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

基于协同过滤算法的非遗文化交流平台设计与实现 #计算机毕业设计 毕设 论文 开题报告

博主介绍 本人程序员一枚&#xff0c;从2017年从事开发行业到现在&#xff0c;我们可以从最初的java,ssm,jsp&#xff0c;发展到现在的spring boot vue框架&#xff0c;随着python的崛起&#xff0c;又融入了django、flask框架的web式开发&#xff0c;一步一步走到现在&#x…

极限科技 Coco AI 荣获 2025 IT168 技术卓越奖 - 创新产品奖

2026年1月 — 在由 IT168 主办的“2025 年度技术卓越奖”评选中,极限科技的人工智能产品 Coco AI 凭借其创新的技术架构与突出的市场实践,荣获 “创新产品奖”。北京,2026 年 1 月 —— 在由 IT168 主办的“2025 年…

PLC-Recorder如何批量添加曲线?

一、分组变量一键拖拽 1.添加PLC2.添加变量3.拖拽变量二、所有变量一键拖拽 1.添加分组2.变量添加分组3.分组拖拽变量

类加载的过程,双亲委派模型以及垃圾回收机制

类加载Java的类加载过程是将.class文件中的二进制数据读入内存,并最终形成可被虚拟机直接使用的Java类型。这一过程主要分为 加载、连接(验证、准备、解析)、初始化三大阶段。加载(Loading):这是类加载的第一步,…

深度学习毕设项目推荐-基于python-CNN卷积神经网络机器学习的柑橘成熟度识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Shader中颜色的加法和乘法的区别

最近在抽空复习图形学,我一开始没注意到环境光、漫反射、镜面反射的处理方式是通过向量加法,即ambient + diffuse + specular 直到后来研究多光源时,才发现不同光源的最终光照值也是通过向量加法计算的。这时我才突…

谈谈我是如何面试技术人员的

1.面试的重点不是为难面试者,自己炫技 2.面试是把他当作你的同事,跟他探讨问题 3.尽量对他擅长的点进行深度挖掘 4.要引导面试者讲出他擅长的点和深度的点系统性的需要考察的知识点: 判断能力的大概打分系统: 我自…

自制py功能包解析IMU航迹推算

在 ROS Melodic 环境下&#xff0c;想要用 Python 实现读取/imu/data话题、完成惯性导航航迹推算&#xff08;含静态初始化&#xff09;&#xff0c;并在 RViz 中实时可视化位姿轨迹一、环境依赖编译# 核心ROS依赖 sudo apt-get install ros-melodic-ros-python ros-melodic-se…

破解银发学习痛点 兴趣岛 “普惠 + 品质” 模式打造积极老龄化范本

你以为 60 的退休生活&#xff0c;就是围着孙子、灶台打转&#xff0c;或是在广场舞的旋律里消磨时光&#xff1f;有这样 50 多位平均年龄超 60 岁的乐龄歌者&#xff0c;用一场专业舞台的音乐会给出了不一样的答案。1 月 16 日晚&#xff0c;广州南越 SYNT 演艺中心温情涌动&…

flask基于python的在线课程学习平台

目录基于Flask的Python在线课程学习平台摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Flask的Python在线课程学习平台摘要 Flask作为轻量级Python Web框架&#xff0c;以其灵活性…

肾脏超声图像质量评估与分类系统实现(附Mask R-CNN模型训练)_1

1. 肾脏超声图像质量评估与分类系统实现&#xff08;附Mask R-CNN模型训练&#xff09; 1.1. 摘要 本文详细介绍了一个基于深度学习的肾脏超声图像质量评估与分类系统的实现过程。系统采用Mask R-CNN作为核心模型&#xff0c;通过对肾脏超声图像进行质量评估和分类&#xff0c;…

2026人参粉选购指南:从“百草之王”到“品质之选”-神象18年林下山参粉 - 行业调研院

《神农本草经》将人参列为“上品”,称其“主补五脏,安精神,定魂魄,止惊悸,除邪气,明目,开心益智”。作为传承千年的“滋补圣品”,人参至今仍是国人调理身体的首选——但如今快节奏的生活里,没人有时间熬参汤、…

java学习笔记1.5

Day05 方法&#xff1a; 程序中的独立功能&#xff0c;也是最小的执行单元使用场景&#xff1a;经常使用的代码打包&#xff0c;放在方法中。好处&#xff1a;提高了程序的复用性和可维护性 核心&#xff1a;接受数据->计算结果->返回结果 int getSum (int a,int b){ //接…

flask基于Python的智能购物电商平台商城

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着电子商务的快速发展&#xff0c;智能购物平台的需求日益增长。基于Python的Flask框架开发的智能购物电商平台&#xff0c;…

深度学习毕设选题推荐:基于python-CNN深度学习识别猫脸

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

java学习笔记1.6

Day06 java中的运行机制 1.java的程序运行的过程是怎么样的&#xff1f; .java文件->编译->.class字节码文件->运行&#xff08;在虚拟机里运行&#xff09; 2.java不是直接运行在操作系统里面的&#xff0c;是运行在虚拟机里面的 3.虚拟机的好处&#xff1a;利用虚拟…

编曲伴奏软件有哪些,音乐人分享AI编曲软件助力原创音乐创作

探索编曲伴奏软件新境界&#xff1a;AI编曲软件助力音乐创作 在音乐制作的广阔天地里&#xff0c;编曲伴奏软件一直是音乐人的得力助手。它们能让音乐人的创意从无形的灵感转化为具体可听的旋律。而如今&#xff0c;随着科技的飞速发展&#xff0c;AI编曲软件的出现更是为音乐制…

flask基于Python的膳食营养健康系统

目录基于Flask的膳食营养健康系统摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Flask的膳食营养健康系统摘要 膳食营养健康系统基于Python的Flask框架开发&#xff0c;旨在为用户…