5-10 公路村村通 (Kruskal+并查集)
5-10 公路村村通 (30分)
现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。
输入格式:
输入数据包括城镇数目正整数NN(\le 1000≤1000)和候选道路数目MM(\le 3N≤3N);随后的MM行对应MM条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到NN编号。
输出格式:
输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出-1−1,表示需要建设更多公路。
输入样例:
6 15
1 2 5
1 3 3
1 4 7
1 5 4
1 6 2
2 3 4
2 4 6
2 5 2
2 6 6
3 4 6
3 5 1
3 6 1
4 5 10
4 6 8
5 6 3
输出样例:
12
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int pre[1211];//记录祖先
int n, m;
int ans;
int sum;
struct node
{int x, y, w;
}T[121211];
int root(int a)//寻找祖先
{while(pre[a]!=a)a = pre[a];return a;
}
int cmp(struct node a, struct node b)
{return a.w<b.w;
}
void Kruskal()
{for(int i=0;i<m;i++){int x = root(T[i].x);int y = root(T[i].y);if(x!=y)//如果祖先不相等,就合并{ans += T[i].w;//记录费用pre[x] = y;sum += 1;//节点+1if(sum==n-1)//连接成图,跳出return ;}}
}
int main()
{scanf("%d %d", &n, &m);for(int i=0;i<m;i++){scanf("%d %d %d", &T[i].x, &T[i].y, &T[i].w);}sort(T, T+m, cmp);for(int i=1;i<=n;i++)//初始化pre[i] = i;ans = 0;sum = 0;Kruskal();if(sum==n-1)//节点恰好等于边数-1printf("%d\n", ans);//输出费用elseprintf("-1\n");//否则,-1return 0;
}
5-10 公路村村通 (Kruskal+并查集)相关推荐
- 洛谷P1536 村村通【并查集】
题目链接:P1536 村村通 程序说明: n个集合需要用n - 1条线连接起来,因此合并完集合后,循环遍历所有点,记录集合的总数,减一则为正确答案 代码如下: #include <iostrea ...
- 洛谷P1536村村通(并查集模板题)
问题出处: https://www.luogu.com.cn/problem/P1536 题目描述: 某市调查城镇交通状况,得到现有城镇道路统计表.表中列出了每条道路直接连通的城镇.市政府 " ...
- 浙大数据结构:08-图7 公路村村通 (30 分)Prim与Kruskal算法
08-图7 公路村村通 (30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N( ...
- 06-图6. 公路村村通(30)
06-图6. 公路村村通(30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的 ...
- 08-图7 公路村村通(浙大数据结构)
中国大学MOOC-陈越.何钦铭-数据结构-2022夏 08-图7 公路村村通 分数 30 作者 陈越 单位 浙江大学 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每 ...
- PTA_21_08_图7 _公路村村通
PTA_21_08_图7 _公路村村通 题目描述 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式 输入数据包括城镇数目 ...
- 06-3. 公路村村通(30)
06-3. 公路村村通(30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若 ...
- 08-图7 公路村村通 (30分)
是关于最小生成树的问题(包含v个顶点v-1条边,且边的权重和最小),利用Kruskal贪心算法–将边合并成树,每次都取权值最小的边并且不构成回路,就利用到了并查集的算法(用数组存父节点). 08-图7 ...
- 08-图7 公路村村通
08-图7 公路村村通(30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤ ...
最新文章
- .NET平台开源项目速览(1)SharpConfig配置文件读写组件
- [原]请留心asp:Image控件中的ImageUrl属性
- 007_logback配置
- 【系统架构理论】一篇文章精通:Spring Cloud Netflix Eureka
- socket网络编程python_python之路8:Socket网络编程
- 阶段1 语言基础+高级_1-2 -面向对象和封装_11使用对象类型作为方法的返回值
- jquery ajax 访问 mysql_使用ajax+jquery+php访问mysql数据库,并且达到不跳转页面的效果。。。...
- redis 辅助工具包 - redis-aux
- 十大热门的 JavaScript 框架和库
- 为什么新装的mysql5.7服务无法启动_mysql 5.7安装 MySQL 服务无法启动但是服务没有报告任何错误...
- 计算机音乐专业学什么软件有哪些内容,电脑音乐入门装备(软件篇)
- 说明书中电磁兼容部分指南和制造商的声明怎么写?
- ps的cc版本安装包以及破解包
- MATLAB系统辨识工具箱-System Identification Toolbox
- 计算机英语pork,[语音]各种肉的英文
- GitHub 小白入门
- 【SpringBoot】3、SpringBoot中整合Thymeleaf模板引擎
- PLC实训 — 传感器介绍
- 锐捷校园网自动登录脚本
- 51单片机LCD1602温度时钟万年历带闹钟DS18B20实践制作DIY- GC0046-出租车计价器