ZOJ 1406 Jungle Roads 【kruskal】

来源:互联网 发布:js 数组是否存在 编辑:程序博客网 时间:2024/06/06 08:45

1406

//2621190 2011-08-10 10:31:25 Accepted 1406 C++ 0 184 ylwh!#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#include <algorithm>#define N 27using namespace std;struct edge{int x, y;int cost;}e[N*N/2];int root[N];bool cmp(struct edge a, struct edge b){return a.cost < b.cost;}int find_root(int x){int temp;temp = x;while(temp != root[temp])temp = root[temp];root[x] = temp;return temp;}int main(){int n, k, temp, flag, d[N], cnt;int i, j, ans;char ch;while(scanf("%d", &n), n){cnt = -1;ans = 0;for(i=0; i<n; i++)root[i] = i;for(i=0; i<n-1; i++){scanf(" %c%d", &ch, &k);temp = ch - 'A';while(k--){scanf(" %c%d", &ch, &flag);e[++cnt].x = temp;e[cnt].y = ch - 'A';e[cnt].cost = flag;}}sort(e, e+cnt+1, cmp);int a, b;for(i=0; i<=cnt; i++){a = find_root(e[i].x);b = find_root(e[i].y);if(a != b){root[b] = a;ans += e[i].cost;}}printf("%d\n", ans);}    return 0;}


原创粉丝点击