UVa - 1395 - Slim Span(Kruskal算法+并查集,最小生成树)
来源:互联网 发布:js点击触发事件 方法名 编辑:程序博客网 时间:2024/05/22 03:12
思路:题目要求求出边权值的最大值和最小值的差值,该差值是最小的。最小生成树,Kruskal算法和Prim算法其中Kruskal算法中的贪心策略,将边权从小到大排列,因此用Kruskal算法来求解。在生成最小生成树的时候,在范围[L,R]中,其中L是最小边权,将求权值的和改为求w[L]-w[R],然后一次更新L的值,遍历所有的情况,更新最小值即可。
注:其中给出的结点的编号是从1开始的,所以并查集的下标要从1-n都更新。
/**Kruskal算法(最小生成树) */#include<cstdio>#include<algorithm>#define N 10010#define INF 999999999using namespace std;int u[N],v[N],w[N],p[N],r[N];int n,m;bool cmp(int i,int j){return w[i]<w[j];}int find(int x){//并查集find return p[x]==x?x:p[x] = find(p[x]);}int Kruskal(){int ans = INF;for(int i=0 ;i<m ;i++)r[i]=i;// 将路径编号 sort(r,r+m,cmp);//排序 for(int i=0 ;i<m ;i++){for(int x=0 ;x<=n ;x++)p[x]=x;//并查集初始化 int cnt = 0,temp=0;//cnt来记录结点的个数 for(int j=i ;j<m ;j++){int e = r[j];int x = find(u[e]);int y = find(v[e]);if(x!=y){p[x] = y;cnt++;if(cnt==n-1){temp = w[r[j]] - w[r[i]];ans = min(ans,temp);break;}}} }if(ans!=INF)printf("%d\n",ans);elseputs("-1");}int main(){while(scanf("%d%d",&n,&m)!=EOF){if(n==0&&m==0)break;for(int i=0 ;i<m ;i++){scanf("%d%d%d",&u[i],&v[i],&w[i]);}Kruskal();}return 0;}
1 0
- UVa - 1395 - Slim Span(Kruskal算法+并查集,最小生成树)
- uva-1395-Slim Span-最小生成树,并查集,Kruskal
- UVA1395-Slim Span(最小生成树Kruskal、并查集)
- [枚举最小瓶颈生成树]UVa-1395 - Slim Span(kruskal)
- uva 1395 - Slim Span poj 3522 Slim Span(最小生成树算法)
- UVA 1395Slim Span 最小生成树
- uva 1395 Slim Span 最小生成树
- uva 1395 Slim Span[最小生成树]
- poj 3522 Slim Span(最小生成树)kruskal算法
- poj 3522 Slim Span(最小生成树 Kruskal算法)
- UVA 1395 Slim Span--苗条的生成树(并查集+枚举)
- UVA 1395 Slim Span(kruskal算法)
- uva 1395 - Slim Span(最小瓶颈生成树)
- (beginer) 最小生成树 UVA 1395 Slim Span
- UVa 1395 Slim Span (最小生成树)
- UVA 1395 Slim Span(最小生成树)
- POJ 3522 Slim Span (并查集 + 枚举 + kruskal)
- Slim Span(并查集+kruskal函数)
- mapper注入失败问题解决 {@org.springframework.beans.factory.annotation.Autowired(required=true)}
- 接口类型的泛型
- C#43课的主要内容
- Codeforces Round #190 (Div. 2)-C. Ciel and Robot
- 第一章 TCP/IP概述
- UVa - 1395 - Slim Span(Kruskal算法+并查集,最小生成树)
- 点云匹配
- C++中类的实例化的两种方法
- Linux进程间的通信方式:信号量的使用
- android 开发中遇到错误及解决办法总结
- 多线程间变量的共享
- 洛谷P2658 汽车拉力比赛
- 构造器内部的多态方法
- STL: insert和copy用法汇总