公路村村通
来源:互联网 发布:sql server许可模式 编辑:程序博客网 时间:2024/04/27 18:51
公路村村通
//kruscal 算法 #include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int per[1010],n,m;struct node//结构体来保存边{ int a,b; int dis;}x[5005];bool cmp(node a,node b){ return a.dis<b.dis;}void init()//初始化操作{ for(int i=1;i<=n;++i) { per[i]=i; }}int find(int x)//并查集的查找操作{ int r=x; while(r!=per[r]) { r=per[r]; } int i=x,j; while(i!=r) { j=per[i]; per[i]=r; i=j; } return r;}bool join(int a,int b)//判断某条边是否可以选择{ int x=find(a),y=find(b); if(x!=y) { per[y]=x; return 1; } return 0;}int main(){ scanf("%d%d",&n,&m); init(); for(int i=1;i<=m;++i) { int a,b,c; scanf("%d%d%d",&a,&b,&c); x[i].a=a;x[i].b=b;x[i].dis=c; } sort(x+1,x+1+m,cmp);//对边进行排序 int sum=0,cnt=0; for(int i=1;cnt<n&&i<=m;++i)//依次选择使得所有顶点连通的边 { if(join(x[i].a,x[i].b)) { sum+=x[i].dis; ++cnt; } } if(cnt==n-1) printf("%d\n",sum);//输出最小生成树的权值 else printf("-1\n"); return 0;}
阅读全文
0 0
- 公路村村通
- 公路村村通
- 公路村村通 (30分)
- SDUT 3362 村村通公路
- 5-10 公路村村通
- SDUT 3362-村村通公路
- 村村通公路(Prim)
- 06-3. 公路村村通(30)
- 08-图7 公路村村通
- 08-图7 公路村村通
- 数据结构实验之图论六:村村通公路
- 数据结构实验之图论六:村村通公路
- 数据结构实验之图论六:村村通公路
- 08-图7 公路村村通
- 数据结构实验之图论六:村村通公路
- 08-图7 公路村村通
- 数据结构实验之图论六:村村通公路
- 数据结构实验之图论六:村村通公路
- 正则表达式提取项目中所有带IP的网址
- OpenGL从1.0开始--OpenGL显示表(下)
- LeetCode 307 Range Sum Query
- 关于对lazyload的原理进行的学习
- 责任链模式
- 公路村村通
- SecureCRT 颜色方案
- 快速检索(二)之ListView的使用进行数据填充及点击事件
- Image-Universal-Loader简介
- 575. Distribute Candies
- tensorflow的共享变量的联系与区别
- GitHub教程 删除已有仓库
- Android实现签到日历控件
- 173. Binary Search Tree Iterator