uva11631 - Dark roads
2013-09-08 20:02
387 查看
#include <cstdio> #include <cstring> #include <cstdlib> using namespace std; const int N = 200010; int id , u , v , w ; int m, n; int p ; int cmp(const void *a, const void *b); int find(int x); int Union(int e); int main() { int sum; int cost; #ifndef ONLINE_JUDGE freopen("uva_in.txt", "r", stdin); #endif while (scanf("%d%d", &m, &n) == 2) { if (m == 0 && n == 0) break; sum = 0; for (int i = 0; i < n; i++) { id[i] = i; scanf("%d%d%d", &u[i], &v[i], &w[i]); sum += w[i]; } memset(p, -1, sizeof(p)); qsort(id, n, sizeof(int), cmp); cost = 0; for (int i = 0; i < n; i++) { cost += Union(id[i]); } printf("%d\n", sum - cost); } return 0; } int cmp(const void *a, const void *b) { int *pa = (int*)a; int *pb = (int*)b; return w[*pa] - w[*pb]; } int find(int x) { return p[x] < 0 ? x : (p[x] = find(p[x])); } int Union(int e) { int a = u[e]; int b = v[e]; int pa = find(a), pb = find(b); if (pa != pb) { p[pb] = pa; return w[e]; } return 0; }
相关文章推荐
- Uva 11631 - Dark roads
- UVa11631 Dark Roads(最小生成树,邻接表)
- UVa 11631 - Dark roads
- UVa 11631 - Dark roads
- Uva-11631- Dark roads
- UVA11631
- uva 839 Not so Mobile
- uva 146 ID Codes
- UVA - 10334 Ray Through Glasses
- uva 11038 How Many O's? 组合计数
- uva 11991 - Easy Problem from Rujia Liu?(STL)
- uva1593 Alignment of Code 习题5-1 战胜心魔觅自我!
- UVA 10723 Cyborg Genes(LCS)
- UVA 12086 Potentiometers(线段树裸题)
- UVA 10801 Lift Hopping(最短路)
- UVa - 1225 - Digit Counting(打表计算)
- Uva 1595 Symmetry
- UVA 562 Dividing coins
- UVA 4997
- UVA572