hrbust 1350 最小生成树问题 (裸题)
来源:互联网 发布:黄帝大战蚩尤电影知乎 编辑:程序博客网 时间:2024/06/15 05:36
最小生成树问题Time Limit: 2000 MSMemory Limit: 32767 KTotal Submit: 328(104 users)Total Accepted: 116(78 users)Rating: ![](http://acm.hrbust.edu.cn/Public/images/star-solid.png)
![](http://acm.hrbust.edu.cn/Public/images/star-solid.png)
Special Judge: NoDescription一个有 n 个结点的无向连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,
并且有保持图联通的最少的边。求解最小生成树的一个算法是Kruskal提出的kruskal算法,该算
法每次找到所有边中权值最小的一条,并判断该边的加入是否会让最小生成树出现环,如果不会则将
其作为最小生成树的一条边。
现在给出一个图的节点数N和边数M以及每条边的权值,求出该图的最小生成树的所有边权值总和。
Input每组输入第一行为N和M,N<=10000,M<=50000,然后为M行,每行三个整数a,b,w,表示a,b之间有
一条权值为w的边。
Output如果该图无法生成最小生成树,即原图不连通,则输出-1,否则输出最小生成树的长度。Sample Input3 3
1 2 1
1 3 2
2 3 4
Sample Output3裸题///
![](http://acm.hrbust.edu.cn/Public/images/star-solid.png)
![](http://acm.hrbust.edu.cn/Public/images/star-solid.png)
![](http://acm.hrbust.edu.cn/Public/images/star-solid.png)
并且有保持图联通的最少的边。求解最小生成树的一个算法是Kruskal提出的kruskal算法,该算
法每次找到所有边中权值最小的一条,并判断该边的加入是否会让最小生成树出现环,如果不会则将
其作为最小生成树的一条边。
现在给出一个图的节点数N和边数M以及每条边的权值,求出该图的最小生成树的所有边权值总和。
Input每组输入第一行为N和M,N<=10000,M<=50000,然后为M行,每行三个整数a,b,w,表示a,b之间有
一条权值为w的边。
Output如果该图无法生成最小生成树,即原图不连通,则输出-1,否则输出最小生成树的长度。Sample Input3 3
1 2 1
1 3 2
2 3 4
Sample Output3裸题///
不想说啥。。看代码吧/。//
#include<stdio.h>#include<string.h>#include<queue>#include<algorithm>using namespace std;struct coor{ int x,y,d; friend bool operator <(coor a,coor b) { return a.d>b.d; }};int pre[10003];priority_queue<coor>q;int find(int x){ if(x!=pre[x]) return pre[x]=find(pre[x]); else return x;}int ans=0;void coin(coor x){ int a=find(x.x); int b=find(x.y); if(a!=b) { pre[a]=b; // printf(" ans:%d %d\n",a,b); ans+=x.d; }}void init(int n){ for(int i=1; i<=n; i++) { pre[i]=i; }}int judge(int n){ int num=find(1); for(int i=2;i<=n;i++) { if(find(i)!=num) return 0; } return 1;}int main(){ int n,m; while(scanf("%d%d",&n,&m)==2) { init(n); ans=0; while(!q.empty()) q.pop(); coor a,b; for(int i=1; i<=m; i++) { scanf("%d%d%d",&a.x,&a.y,&a.d); q.push(a); } while(!q.empty()) { b=q.top(); coin(b); q.pop(); } if(judge(n)) printf("%d\n",ans); else printf("-1\n"); }}
0 0
- hrbust 1350 最小生成树问题 (裸题)
- hrbust 1101 Bombs of HRBUST(最小生成树)
- hrbust 1133 MST (最小生成树)
- hrbust 1679 跑步【最小生成树相关】
- Hrbust 1123 MST(最小生成树,Kruskal算法|Prim算法)
- hrbust 1133报告、MST最小生成树 Kruskal算法
- 最小生成树问题
- 最小生成树问题
- 最小生成树问题
- 最小生成树问题
- 最小生成树问题
- 最小生成树问题
- 最小生成树问题
- 最小生成树问题
- 最小生成树问题
- 最小生成树问题
- 最小生成树问题
- Hust oj 1350 最小生成树问题(MST)
- LeetCode-37. Sudoku Solver (JAVA)(数独游戏解集)
- 跟小博老师一起学习数据库 ——约束(下篇)
- bzoj 2693 jzptab 莫比乌斯反演
- Could not find goal 'create' in plugin org.apache.maven.plugins:maven-archetype-plugin:3.0.0 among
- Spring中定时器实现
- hrbust 1350 最小生成树问题 (裸题)
- MATLAB相关作业
- JAVA 分割字符串
- Docker 定制ssh、java等基础服务镜像
- http协议
- JAVA学习路线
- 动态规划 18题
- pandas常用函数之date_range
- Spring整合Struts2和Hibernate+Maven(三)之请求的处理