uva 1395 - Slim Span(生成树)
2015-09-11 21:46
302 查看
题目链接:uva 1395 - Slim Span
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn = 105;
const int inf = 0x3f3f3f3f;
struct Edge {
int u, v, d;
bool operator < (const Edge& a) const { return d < a.d; }
}E[maxn * maxn];
int N, M, F[maxn], ans;
int find(int x) { return x == F[x] ? x : F[x] = find(F[x]); }
int solve (int s) {
int n = N;
for (int i = 1; i <= N; i++) F[i] = i;
for (int i = s; i < M; i++) {
int u = E[i].u, v = E[i].v;
if (E[i].d - E[s].d >= ans) break;
if (find(u) != find(v)) {
if (--n == 1) return E[i].d - E[s].d;
F[find(u)] = find(v);
}
}
return inf;
}
int main () {
while (scanf("%d%d", &N, &M) == 2 && N + M) {
for (int i = 0; i < M; i++)
scanf("%d%d%d", &E[i].u, &E[i].v, &E[i].d);
sort(E, E + M);
ans = inf;
for (int i = 0; i <= M - N + 1; i++)
ans = min(ans, solve(i));
printf("%d\n", ans == inf ? -1 : ans);
}
return 0;
}
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn = 105;
const int inf = 0x3f3f3f3f;
struct Edge {
int u, v, d;
bool operator < (const Edge& a) const { return d < a.d; }
}E[maxn * maxn];
int N, M, F[maxn], ans;
int find(int x) { return x == F[x] ? x : F[x] = find(F[x]); }
int solve (int s) {
int n = N;
for (int i = 1; i <= N; i++) F[i] = i;
for (int i = s; i < M; i++) {
int u = E[i].u, v = E[i].v;
if (E[i].d - E[s].d >= ans) break;
if (find(u) != find(v)) {
if (--n == 1) return E[i].d - E[s].d;
F[find(u)] = find(v);
}
}
return inf;
}
int main () {
while (scanf("%d%d", &N, &M) == 2 && N + M) {
for (int i = 0; i < M; i++)
scanf("%d%d%d", &E[i].u, &E[i].v, &E[i].d);
sort(E, E + M);
ans = inf;
for (int i = 0; i <= M - N + 1; i++)
ans = min(ans, solve(i));
printf("%d\n", ans == inf ? -1 : ans);
}
return 0;
}
相关文章推荐
- JAVA- FileInputStream与FileReader的区别
- 【POJ2516】【最小费用流】
- 巴菲特投资秘诀
- 第九篇:OC中的万能指针id 及 构造方法的实现与应用
- #2028 Lowest Common Multiple Plus
- (4.1.35.4)android中的native crash
- fstat、stat和lstat 区别(转) http://www.cnitblog.com/guopingleee/archive/2008/11/13/51411.aspx
- Java文件下载
- java正则
- Scala 深入浅出实战经典 第87讲:Scala中使用For表达式做查询
- USACO 1.2 Transformations (用结构体来模拟)
- uva 1361 - Cactus(双联通)
- 设计模式C++实现(1)——工厂模式
- NSData类方法的同步请求、NSString类方法的同步请求
- LeetCode(64) Minimum Path Sum
- LeetCode(64) Minimum Path Sum
- SQL删除数据总结
- 《剑指offer》数组中出现次数超过一半的数字
- 数据结构之自建算法库——双链表
- Android(java)学习笔记232:远程服务之 IPC 和 AIDL (面试常问)