hdu 2122 Ice_cream’s world III 最小生成树kruskal+并查集
来源:互联网 发布:大数据挖掘工程师招聘 编辑:程序博客网 时间:2024/05/22 15:09
传送门:hdu 2122
题目大意
判断输入的几个节点能不能组成最小生成树,如果能输出最小生成树的值,如果不能疏忽impossible
解题思路
刚开始用的prim一直WA一直WA就改为kruskal了,就kruskal果断过了!
kruskal和prim不同的是,prim主要是针对节点的,也就是把节点加入集合里面,kruskal是把边也就是权值从小到大的加入到集合里面,如果这两个边不在同一个连通分量里面,就转换为一个连通分量,最后判断是不是之后一个连通分量,如果有的话就是有最小生成树,输出数值
AC代码
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAXN = 10010;int pre[MAXN];int N,M;struct Node{ int a,b,val;}s[MAXN];bool cmp(Node a,Node b){ return a.val<b.val;}void init(){ for(int i=0;i<N;i++) pre[i] = i;}int find(int x){ return (pre[x]!=x)?(pre[x] = find(pre[x])):pre[x];}int main(){ while(~scanf("%d%d",&N,&M)) { init(); for(int i=0;i<M;i++) scanf("%d%d%d",&s[i].a,&s[i].b,&s[i].val); sort(s,s+M,cmp); int amount = 0,sum = 0; for(int i=0;i<M;i++) { int fx = find(s[i].a),fy = find(s[i].b); if(fx!=fy)//判断是不是在同一个连通分量 { pre[fx] = fy; amount++; sum+=s[i].val; } } if(amount == N-1) printf("%d\n\n",sum); else printf("impossible\n\n"); } return 0;}
1 0
- hdu 2122 Ice_cream’s world III 最小生成树kruskal+并查集
- HDU 2122 Ice_cream’s world III(最小生成树Kruskal)
- 文章标题 HDU 2122: Ice_cream’s world III (最小生成树+kruskal)
- Ice_cream’s world III hdu 2122 最小生成树
- hdu 2122 Ice_cream’s world III(最小生成树)
- HDU 2122 Ice_cream’s world III 【最小生成树】
- hdu 2122 Ice_cream’s world III(最小生成树)
- hdu 2122 Ice_cream’s world III 最小生成树prim
- HDU2122--Ice_cream’s world III--最小生成树--kruskal
- hdoj 2122Ice_cream’s world III 【最小生成树 kruskal && prim】
- Ice_cream’s world III【最小生成树】
- hdoj 2122 Ice_cream’s world III 【最小生成树】
- hdoj 2122 Ice_cream’s world III【最小生成树】
- hdoj 2122 Ice_cream’s world III 【最小生成树】
- 杭电 最小生成树 2122 Ice_cream’s world III
- hdu 2122 Ice_cream’s world III(最小生成树))
- hdu 2122(Ice_cream’s world III)(最小生成树,两种算法都可以)
- 最小生成树 Prim 算法HDU 2122 Ice_cream’s world III
- Chromium视频标签<video>简要介绍和学习计划
- Java挑战并发(1):可重入内置锁
- 贪心算法与动态规划的比较
- 欢迎使用CSDN-markdown编辑器
- 单(向)链表
- hdu 2122 Ice_cream’s world III 最小生成树kruskal+并查集
- 文章标题
- 堆排序算法伪代码
- synchronized关键字
- SpringMVC Interceptor
- Ubuntu 16.04更新软件提示"需要安装不能信任的软件包" http://archive.ubuntukylin.com:10006/ubuntukylin xenial InRelease
- Tarjan模板题求割点,桥
- 一个多层级节点用户树的设计构思
- register,static,const,extern,typedef,volatile的详讲