news 2026/10/9 21:59:08

P10928 走廊泼水节(最小生成树 贪心 并查集)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
P10928 走廊泼水节(最小生成树 贪心 并查集)

P10928 走廊泼水节

时间限制: 1.00s 内存限制: 512.00MB

复制 Markdown 退出 IDE 模式

题目描述

给定一棵 N 个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树。

求增加的边的权值总和最小是多少。

注意:树中的所有边权均为整数,且新加的所有边权也必须为整数。

输入格式

第一行包含整数 t,表示共有 t 组测试数据。

对于每组测试数据,第一行包含整数 N。

接下来 N−1 行,每行三个整数 X,Y,Z,表示 X 节点与 Y 节点之间存在一条边,长度为 Z。

输出格式

每组数据输出一个整数,表示权值总和最小值。

每个结果占一行。

输入输出样例

输入 #1复制运行

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

输出 #1复制运行

4 17

说明/提示

数据保证,1≤t≤10,1≤N≤6000,1≤Z≤100。

根据题意 我们要保证最小生成树不变 那么我们可以先模拟一遍最小生成树的过程 当增加一条边的时候 就有两颗树合并到一起 将边权从小到大排序后 那么对于这条边的边权z 和两边树的大小s[x] s[y] 我们在每个集合中任意选择一个点 构成一条边 由于两个集合因为边z 已经合并 那么在这两个集合中选择的边不会被接下来考虑 因为这两个点已经进入了并查集 那么这条边最小就可以设置为 z+1 边的数量就是两侧集合的点的数量的乘积-1 也就是s[x]*s[y]-1 最后累加即可得到答案

代码实现如下

#include <bits/stdc++.h> using namespace std; const int N=6005; struct node{ //存边 int x,y,z; }edge[N]; int fa[N],s[N]; bool cmp(node a,node b){ //边排序 return a.z<b.z; } int get(int x){ //并查集查询 if(x==fa[x])return x; return fa[x]=get(fa[x]); } void solve(){ int n;cin>>n; for(int i=1;i<n;i++){ cin>>edge[i].x>>edge[i].y>>edge[i].z; } sort(edge+1,edge+n,cmp); for(int i=1;i<=n;i++)fa[i]=i,s[i]=1; //初始化并查集 并且维护森林中每颗树(每个集合)的大小 long long ans=0; for(int i=1;i<n;i++){ int x=get(edge[i].x); int y=get(edge[i].y); if(x==y)continue; //判断是否已经在一个并查集中 ans+=(1LL*(edge[i].z+1)*(s[x]*s[y]-1)); fa[x]=y; s[y]+=s[x]; } cout<<ans<<'\n'; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t;cin>>t; while(t--)solve(); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 21:58:20

Gemini 3.1 Pro大模型性能飙升,小白程序员速来围观收藏!

Google发布Gemini 3.1 Pro&#xff0c;AI benchmark成绩从31%跃升至77%&#xff0c;实现版本迭代直接翻倍&#xff0c;在ARC-AGI-2、Coding Agent及Deep Think模式等多项测试中大幅领先&#xff0c;证明其在模型智能和推理能力上的突破。开发者社区对此反应热烈&#xff0c;认为…

作者头像 李华
网站建设 2026/10/9 21:58:33

7种AI降重技巧分享,助力论文顺利通过审核,提升学术质量。

还在为论文查重率发愁&#xff1f;随着学术规范日益严格&#xff0c;查重和AIGC检测成为论文通过的硬性门槛。别担心&#xff0c;AI降重工具来拯救你&#xff01;经过实测对比&#xff0c;我整理了7款表现优异的AI降重工具排名&#xff0c;帮你轻松过关。 &#xfffd;&#x…

作者头像 李华
网站建设 2026/10/9 21:58:59

教育资源AI智能分配,构建智能化教育环境

教育资源AI智能分配:从算法逻辑到智能化教育环境的构建路径 元数据框架 标题:教育资源AI智能分配:从算法逻辑到智能化教育环境的构建路径 关键词:教育资源分配、AI智能推荐、智能化教育环境、教育公平、数据驱动教育、个性化学习、教育技术架构 摘要: 教育资源分配是制约…

作者头像 李华
网站建设 2026/10/9 21:58:29

掌握这7种AI降重技巧,轻松提升论文通过率,让你的学术成果顺利达标。

学术论文的查重率和AIGC检测通过率是当前学术规范中的关键指标。针对这一需求&#xff0c;市场涌现出多款高效的AI降重工具&#xff0c;通过智能改写技术帮助研究者优化文本。经过专业测试与横向对比&#xff0c;以下七款工具在语义保持、降重效果和合规性方面表现突出&#xf…

作者头像 李华
网站建设 2026/10/5 1:18:29

单例模式:从经典实现到Vibe Coding时代的思考

单例模式&#xff1a;从经典实现到Vibe Coding时代的思考引言&#xff1a;单例模式的魅力与挑战1. 单例模式基础&#xff1a;类图与代码实现类图解析基础代码实现&#xff08;C版本&#xff09;2. 懒汉模式 vs 饱汉模式&#xff1a;性能与初始化的艺术懒汉模式&#xff08;Lazy…

作者头像 李华