Uva1395——Slim Span
来源:互联网 发布:js onclick传多个参数 编辑:程序博客网 时间:2024/06/05 22:53
这题,最小生成树的应用,只是需要稍微变形一下。
输入结点数为n,边数为m,对每条边进行从小到大排序,然后枚举枚举每一条边,从该边起到最后这些边中求最小生成树并找到权值最大的边。不断的更新最大权值与枚举的边的差值。
代码:
#include <iostream>#include <algorithm>using namespace std;const int maxn = 110;int m, n;int maxnt;int p[maxn];struct node{int x, y, d;}data[5010];int cmp(node x, node y){return x.d < y.d;}int finds(int x){return p[x] == x ? x : p[x] = finds(p[x]);}bool krus(int k){int i, count = 0;maxnt = -1;for(i = 0; i <= n; i++)p[i] = i;for(i = k; i < m; i++){int fx = finds(data[i].x);int fy = finds(data[i].y);if(fx != fy){p[fy] = fx;if(maxnt < data[i].d)maxnt = data[i].d;if(++count == n - 1)return true;}}return false;}int main(){//freopen("1.txt", "r", stdin);int i, j;while(cin >> n >> m){if(m == 0 && n == 0)break;for(i = 0; i < m; i++)cin >> data[i].x >> data[i].y >> data[i].d;sort(data, data + m, cmp);int ans = 0xfffffff;for(j = 0; j < m; j++){if(krus(j)){if(ans > maxnt - data[j].d)ans = maxnt - data[j].d;}}if(ans == 0xfffffff)cout << -1 << endl;elsecout << ans << endl;}return 0;}
0 0
- Uva1395——Slim Span
- (UVA1395)Slim Span(A)
- uva1395 Slim Span
- [生成树][Uva1395][Slim Span]
- 苗条的生长树slim span,uva1395——最小生成树,kruskal
- UVA1395 Slim Span(kruskal算法)
- UVA1395[Slim Span] Kruskal模板题
- Uva1395 Slim Span(最小生成树)
- Uva1395.Slim Span(最小生成树变形)
- UVa1395&POJ3522--Slim Span【kruskal】瓶颈生成树
- UVa1395 && POJ 3522 Slim Span [最小生成树]
- UVA1395-Slim Span(最小生成树Kruskal、并查集)
- POJ3522——Slim Span(最小生成树)
- Slim Span
- Slim Span
- Slim Span
- Slim Span
- Slim Span
- Unity3d导出Xcode各种问题总结
- VR相关网站
- 球面距离
- day18
- Eclipse 下载 Git 仓库中代码(github上)
- Uva1395——Slim Span
- Java读取操作word2003 word2007 word2010文档
- uva10986 优先队列优化的Dijkstra
- ahu-557容斥原理
- git 常用命令--详述
- quick 3.3 display.newColorLayer setContentSize
- Ubuntu 14.04安装Caffe
- FFMPEG库引用的顺序在GCC编译时还有影响
- POJ 1125