HDU -- 1863 畅通工程 (mst)
来源:互联网 发布:nicelabel 数据库密码 编辑:程序博客网 时间:2024/06/05 15:43
题目大意:给出n条路,m个村庄,n行对应村庄及其道路成本,求得是所有村庄连通的最小花费。
思路分析:用克鲁斯卡尔算法(Kruskal Algorithm),其思想是把每两个点的边存下来,按权值从小到大排序,按边来加点,每当生成一天mst的边时,合并这个边的两个顶点,而判断这条边能否成为mst的一条边的判断依据就是边的两个顶点是否已连通,如果连通则继续下一条;如果不连通,那么就选择使其连通。当所有的点都连通时就生成了而一个mst。
代码实现:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=10000;int father[110];int n,m;struct Node{ int v1; int v2; int val; Node(int b=0,int e=0,int v=0):v1(b),v2(e),val(v){}}edge[maxn];int cmp(Node a,Node b){ return a.val<b.val;}int find_set(int a){ if(a!=father[a]) father[a]=find_set(father[a]); return father[a];}void Merge(int a,int b){ int x=find_set(a); int y=find_set(b); //printf("mm %d %d\n",x,y); father[x]=y;}void kruskal(){ int sum=0,flag=0; for(int i=0;i<=m;i++) father[i]=i; int i,j; for(i=0,j=0;i<m-1&&j<n;j++){ if(find_set(edge[j].v1)==find_set(edge[j].v2)) continue; Merge(edge[j].v1,edge[j].v2); sum+=edge[j].val; i++; } if(i==m-1) printf("%d\n",sum);//判断是否生成一个mst,也可以利用并查集中的集合数来判断,当所有顶点都在一个集合时,表明生成了mst; else printf("?\n");}int main(){ while(~scanf("%d%d",&n,&m),n){ memset(edge,0,sizeof(edge)); for(int i=0;i<n;i++) scanf("%d%d%d",&edge[i].v1,&edge[i].v2,&edge[i].val); sort(edge,edge+n,cmp); kruskal(); } return 0;}
0 0
- HDU -- 1863 畅通工程 (mst)
- hdu 1863 畅通工程(MST,prim)
- [MST]HDU 1863 畅通工程
- HDU -- 1233 还是畅通工程(mst)
- HDU -- 1789 继续畅通工程(mst)
- HDU 1233 还是畅通工程 (MST)
- hdu 1233 还是畅通工程(MST)
- 畅通工程(MST)
- 畅通工程(MST)
- hdu 1102 Constructing Roads +1879 继续畅通工程(MST)
- HDU 1233 还是畅通工程(MST裸题)
- HDU 1875 畅通工程再续(MST)
- hdu 1875 畅通工程再续(MST)
- hdu 1233 还是畅通工程 (MST,Prim)
- 还是畅通工程(MST)
- [MST]HDU 1233还是畅通工程
- [MST] hdu 1875 畅通工程再续
- HDU - 1233 还是畅通工程(Kruskal - MST)
- Android中使用Handler引发的内存泄露
- vmware 虚拟机使用redhat,出现 connect: Network is unreachable解決方法
- 自定义九宫格控件NineGridLayout ,实现微信朋友圈图片九宫格显示
- Understanding GPU Derivatives(ddx,ddy)
- java中的对象转换
- HDU -- 1863 畅通工程 (mst)
- Java --乘方
- Unity3D技术之小地图的制作详解
- Unity3D 控制物体移动、旋转、缩放
- Android学习笔记<一>
- 35岁还在招聘网站投递简历跳槽?看看职业发展建议吧!
- Unity3D学习之轻量级便捷DIY的遮罩
- 为什么你应该(从现在开始就)写博客
- eXtremeDB 6.0 SAL 库依赖