【最小生成树】
来源:互联网 发布:北京北大青鸟网络学校 编辑:程序博客网 时间:2024/06/05 04:44
/*本题要求求出最大树,刚好克鲁斯卡尔算法按照权值从大到小排序就行了POJ 2377*/#include<cstdio>#include<algorithm>using namespace std;int father[1005];int n,m;struct Edge{ int s,e; int cost;}edge[20005];int cmp(Edge x,Edge y){ return x.cost>y.cost;}void make_set(){ for(int i=1;i<=n;i++) father[i]=i; for(int i=1;i<m;i++) edge[i].cost=0;}int find_set(int x){ if(x!=father[x]) father[x]=find_set(father[x]); return father[x];}int union_set(int x,int y){ int fx=find_set(x); int fy=find_set(y); if(fx==fy) return 0; father[fx]=fy; return 1;}int main(){ while(~scanf("%d%d",&n,&m)){ int sum=0; make_set(); for(int i=0;i<m;i++){ scanf("%d%d%d",&edge[i].s,&edge[i].e,&edge[i].cost); } sort(edge,edge+m,cmp); for(int i=0;i<m;i++){ if(union_set(edge[i].s,edge[i].e)){ sum+=edge[i].cost; } } int a=find_set(1),flag=1; for(int i=2;i<=n;i++){ if(find_set(i)!=a){ flag=0; break; } } if(flag) printf("%d\n",sum); else printf("-1\n"); }}
/*求最小生成树中的最长边POJ 2395*/#include<cstdio>#include<algorithm>using namespace std;int father[2005];int n,m;struct Edge{ int s,e; int cost;}edge[10005];int cmp(Edge x,Edge y){ return x.cost<y.cost;}void make_set(){ for(int i=1;i<=n;i++) father[i]=i; for(int i=1;i<m;i++) edge[i].cost=0;}int find_set(int x){ if(x!=father[x]) father[x]=find_set(father[x]); return father[x];}int union_set(int x,int y){ int fx=find_set(x); int fy=find_set(y); if(fx==fy) return 0; father[fx]=fy; return 1;}int main(){ while(~scanf("%d%d",&n,&m)){ make_set(); for(int i=0;i<m;i++){ scanf("%d%d%d",&edge[i].s,&edge[i].e,&edge[i].cost); } sort(edge,edge+m,cmp); int max_x=-1; for(int i=0;i<m;i++){ if(union_set(edge[i].s,edge[i].e)){ if(max_x<edge[i].cost) max_x=edge[i].cost; } } printf("%d\n",max_x); }}
0 0
- 最小比例 最小生成树
- 最小生成树&&次最小生成树
- 最小生成生成树计数
- 树+最小生成树
- 最小生成树
- 最小生成树 MST
- 最小生成树Kruskal
- kruskal 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树 MST
- 最小生成树问题
- 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树
- Java——坦克大战(2)
- Eclipse快捷键大全
- C++ Primer 第八章 标准IO库
- cookie与session以及他们的常规用途——web开发必须熟知的知识
- android 虚拟设备(AVD)的创建和使用
- 【最小生成树】
- EL表达式语言
- [LeetCode] Letter Combinations of a Phone Number
- 在一个文件中有10G个整数,乱序排列,要求找出中位数
- 批量删除Windows7中隧道适配器的方法
- Distinct Subsequences
- Parallels 9 Activation:
- Buttons(poj 2368)
- 10006Carmichael Numbers