uva 1395 苗条的生成树(最小生成树入门)
2016-08-17 13:06
330 查看
补一下图论知识...
题意:给n个点,m条边,求所有生成树中:边权最大值- 边权最小值 的结果最小
思路:区间做一遍最小生成树,每次记录成功的左端点和右端点,维护最小值就可以了。
(用了kuangbin的模板)
题意:给n个点,m条边,求所有生成树中:边权最大值- 边权最小值 的结果最小
思路:区间做一遍最小生成树,每次记录成功的左端点和右端点,维护最小值就可以了。
(用了kuangbin的模板)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define INF 0x3fffffff using namespace std; const int MAXN = 110; //最大点数 const int MAXM = 10000;//最大边数 int F[MAXN]; struct Edge{ int u,v,w; }edge[MAXM]; int tol; void addedge(int m){ // edge[tol].u = u; // edge[tol].v = v; // edge[tol++].w = w; for(int i =0;i<m;i++){ int u,v,w; scanf("%d%d%d",&u,&v,&w); //addedge(u,v,w); edge[i].u = u; edge[i].v = v; edge[i].w = w; } tol = m; } bool cmp(Edge a,Edge b){ return a.w < b.w; } int find(int x){ return F[x] == -1? x : F[x] = find(F[x]); } int kruskal(int n){ sort(edge,edge+tol,cmp); int ans = INF; for(int i = 0;i<tol;i++){ int low = edge[i].w,high = 0; int cnt = 0; memset(F,-1,sizeof F); for(int j =i;j<tol;j++){ int u = edge[j].u; int v = edge[j].v; int w = edge[j].w; int t1 = find(u); int t2 = find(v); if(t1!=t2){ cnt++; F[t1] = t2;high = w; } if(cnt == n-1) ans = min(high - low,ans); } } if(ans == INF) ans = -1; return ans; } int n,m; int main() { //freopen("in.txt","r",stdin); while(~scanf("%d%d",&n,&m) && !(n==m&&n == 0)){ addedge(m); printf("%d\n",kruskal(n)); } return 0; }
相关文章推荐
- 例题11-2 UVA - 1395 Slim Span 苗条的生成树(Kruscal最小生成树)
- 苗条的生长树slim span,uva1395——最小生成树,kruskal
- 最小生成树(苗条生成树 uva 1395)
- uva 1395 - Slim Span poj 3522 Slim Span(最小生成树算法)
- UVa 1395 (最小生成树) Slim Span
- UVA 1395 Slim Span 最小生成树
- uva1395 Kruskal算法求最小生成树
- 11.2.2 例题 11-2 UVA 1395 Slim Span (最大值-最小值尽可能小的生成树)
- 例题11-2 苗条的生成树 UVa1395
- UVA-1395(最小瓶颈生成树)
- UVA 1395 Slim Span 最小生成树
- UVa 1395 最小生成树
- UVa1395图论之最小生成树
- uva 1395 Slim Span 最小生成树
- UVA 1395 Slim Span(最小生成树)
- uva 1395 - Slim Span(最小瓶颈生成树)
- 例题11-2 苗条的生成树 UVa1395 Kruskal算法样例(基于并查集,which is almost like set)
- UVa 1395 Slim Span【最小生成树】
- UVA - 1395 Slim Span(最小生成树最大边权和最小边权之差最小)
- [枚举最小瓶颈生成树]UVa-1395 - Slim Span(kruskal)