7-10 公路村村通(并查集kruskal)
最小生成树
题目链接
现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。
输入格式:
输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。
输出格式:
输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−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
C++代码
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long ll;
const int N = 1e3 + 10;
const int M = 3 * N;
const int INF = 0x3f3f3f3f;
typedef pair<int,int> PII;
struct Edge{int u,v,w;bool operator<(const Edge &edge)const{return w < edge.w;}
}edge[M];
int fa[N],n,m;
void init(){for(int i = 0;i < n;i ++)fa[i] = i;
}
int Find(int x){return fa[x] = (x == fa[x] ? x : Find(fa[x])); //压缩路径并查集
}
int main(){cin>>n>>m;init();int x,y,w;for(int i = 0;i < m;i ++){cin>>x>>y>>w;edge[i].u = x;edge[i].v = y;edge[i].w = w;}sort(edge,edge + m);int res = 0,cnt = 0;for(int i = 0;i < m;i ++){int X = Find(edge[i].u),Y = Find(edge[i].v);if(X != Y){fa[X] = Y;res += edge[i].w;cnt ++;}}if(cnt != n - 1)cout<< -1;else cout<<res;return 0;
}
7-10 公路村村通(并查集kruskal)相关推荐
- P1536 村村通(并查集)
村村通 - 洛谷https://www.luogu.com.cn/problem/P1536 #include <iostream> #include <cstdio> #in ...
- 数据结构与算法A实验六图论---7-4 公路村村通(最小生成树Prime和Kruskal算法)
现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N) ...
- 7-10 公路村村通 (30分) C++ kruskal算法
题目描述 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M( ...
- P1536 村村通 并查集
题目: 样例: input: 4 2 1 3 4 3 3 3 1 2 1 3 2 3 5 2 1 2 3 5 999 0 0 output: 1 0 2 998 思路: 如果道路数量为0,则直接输出n ...
- 5-10 公路村村通 (Kruskal+并查集)
5-10 公路村村通 (30分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数NN(\ ...
- 06-图6. 公路村村通(30)
06-图6. 公路村村通(30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的 ...
- 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(≤ ...
最新文章
- swift 跳转网页写法
- 为啥不能用uuid做MySQL的主键?
- Windows 编程[3] - 学习窗体生成的过程三
- 【计算理论】下推自动机 PDA ( 设计下推自动机 | 上下文无关语法 CFG 等价于 下推自动机 PDA )
- python pointer_python 的隐式指针特征与class inheritance
- centos上安装adobe flash
- 【Flink】Flink SQL 架构 以及 执行逻辑
- 表格中文字如何设置上下居中
- JavaScript中的加密解密
- 基于数据安全的风险评估-数据资产识别
- RGB颜色值转换为十进制
- 2021-04-13
- Word2vec词向量
- liunx安装jdk报A fatal exception has occurred. Program will exit
- html div 内部居中。
- 杰理之关于608n省晶振模式使用PWM_LED的注意事项【篇】
- 怎么查看linux系统下数据库的进程数,如何查看sybase数据库运行情况
- Lisp的本质 - 从另一种角度洞悉Lisp之美
- 计算机键盘时好时坏,win10键盘失灵错乱的几种解决方法【图文】
- mock格式数据整理