news 2026/4/3 5:52:21

算法竞赛备考冲刺必刷题(C++) | 洛谷 P2052 道路修建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法竞赛备考冲刺必刷题(C++) | 洛谷 P2052 道路修建

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:[P2052 NOI2011] 道路修建 - 洛谷

【题目描述】

在 W 星球上有n nn个国家。为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通。但是每个国家的国王都很吝啬,他们只愿意修建恰好n − 1 n - 1n1条双向道路。

每条道路的修建都要付出一定的费用,这个费用等于道路长度乘以道路两端 的国家个数之差的绝对值。例如,在下图中,虚线所示道路两端分别有2 22个、4 44个国家,如果该道路长度为1 11,则费用为1 × ∣ 2 − 4 ∣ = 2 1×|2 - 4|=21×∣24∣=2。图中圆圈里的数字表示国家的编号。

由于国家的数量十分庞大,道路的建造方案有很多种,同时每种方案的修建费用难以用人工计算,国王们决定找人设计一个软件,对于给定的建造方案,计算出所需要的费用。请你帮助国王们设计一个这样的软件。

【输入】

输入的第一行包含一个整数n nn,表示 W 星球上的国家的数量,国家从1 11n nn编号。

接下来n − 1 n - 1n1行描述道路建设情况,其中第i ii行包含三个整数a i a_iaib i b_ibic i c_ici,表示第i ii条双向道路修建在a i a_iaib i b_ibi两个国家之间,长度为c i c_ici

【输出】

输出一个整数,表示修建所有道路所需要的总费用。

【输入样例】

6 1 2 1 1 3 1 1 4 2 6 3 1 5 2 1

【输出样例】

20

【算法标签】

《洛谷 P2052 道路修建》 #树形数据结构# #广度优先搜索BFS# #深度优先搜索DFS# #NOI# #2011#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong// 将int定义为long long类型constintN=1000005,M=N*2;// N: 最大节点数, M: 最大边数(双向边)intn;// 节点数intcnt[N];// cnt[u]: 以u为根的子树大小intans;// 最终答案inth[N];// 邻接表头inte[M];// 边的终点intw[M];// 边的权重intne[M];// 下一条边intidx;// 边计数器// 添加边voidadd(inta,intb,intc){e[idx]=b;// 存储终点w[idx]=c;// 存储边权ne[idx]=h[a];// 插入到链表头部h[a]=idx++;// 更新头指针}// 第一次DFS:计算每个节点的子树大小voiddfs(intu,intfa){cnt[u]=1;// 初始化,包含自己// 遍历所有邻接点for(inti=h[u];i!=-1;i=ne[i]){intj=e[i];// 子节点if(j==fa)continue;// 跳过父节点dfs(j,u);// 递归处理子节点cnt[u]+=cnt[j];// 累加子树的节点数}}// 第二次DFS:计算总贡献voiddfs2(intu,intfa){// 遍历所有邻接点for(inti=h[u];i!=-1;i=ne[i]){intj=e[i];// 子节点if(j==fa)continue;// 跳过父节点// 计算边(u, j)的贡献// cnt[j]: 子树j的节点数// n - cnt[j]: 另一部分的节点数// 两部分的差值乘以边权ans+=w[i]*abs(cnt[j]-(n-cnt[j]));// 递归处理子节点dfs2(j,u);}}signedmain()// 因为使用了#define int long long,所以用signed main{// 初始化邻接表memset(h,-1,sizeof(h));// 输入节点数cin>>n;// 输入n-1条边for(inti=1;i<n;i++){intu,v,w;// 使用scanf加速输入scanf("%d%d%d",&u,&v,&w);// 添加双向边add(u,v,w);add(v,u,w);}// 第一次DFS:计算子树大小dfs(1,0);// 第二次DFS:计算总贡献dfs2(1,0);// 输出结果cout<<ans<<endl;return0;}

【运行结果】

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

通达信起爆

{}起爆选股&#xff1a;你看一下成吗!! {起爆选股} DIF:EMA(DCLOSE,12)-EMA(DCLOSE,26); DEA:EMA(DIF,9); AAA:(DIF-DEA)*2*60; 起爆:CROSS(AAA-REF(AAA,1),15),COLORRED,LINETHICK2; DRAWICON(起爆,L*0.99,1);

作者头像 李华
网站建设 2026/3/31 19:52:29

Python+Vue的医疗档案信息可视化系统 Pycharm django flask

目录 这里写目录标题目录项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 …

作者头像 李华
网站建设 2026/4/3 4:18:14

Python+Vue的汉服销售商城系统 Pycharm django flask

目录 这里写目录标题目录项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 …

作者头像 李华
网站建设 2026/4/3 5:00:11

升级模型权重:如何安全替换I2VGen-XL的新版本ckpt文件

升级模型权重&#xff1a;如何安全替换I2VGen-XL的新版本ckpt文件 &#x1f4cc; 背景与挑战&#xff1a;为何需要更新模型权重&#xff1f; 在基于 I2VGen-XL 的图像转视频&#xff08;Image-to-Video&#xff09;系统中&#xff0c;模型权重文件&#xff08;.ckpt&#xff09…

作者头像 李华
网站建设 2026/3/27 17:05:39

语音合成质量评估体系:建立Sambert-HifiGan的评测标准

语音合成质量评估体系&#xff1a;建立Sambert-HifiGan的评测标准 引言&#xff1a;中文多情感语音合成的技术演进与挑战 随着智能语音助手、有声读物、虚拟主播等应用的普及&#xff0c;高质量、富有表现力的中文语音合成&#xff08;TTS&#xff09; 已成为人机交互的关键环节…

作者头像 李华
网站建设 2026/3/27 5:40:32

Sambert-HifiGan在智能车载导航中的优化实践

Sambert-HifiGan在智能车载导航中的优化实践 &#x1f4cc; 引言&#xff1a;语音合成如何重塑车载交互体验 随着智能座舱技术的快速发展&#xff0c;自然、拟人化、富有情感的语音反馈已成为提升驾驶安全与用户体验的核心要素。传统TTS&#xff08;Text-to-Speech&#xff0…

作者头像 李华