还是畅通工程

来源:互联网 发布:caffe 是啥 编辑:程序博客网 时间:2024/06/05 06:00

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233

#include<cstdio>#include<algorithm>int fa[100 + 10];struct Road{    int x;    int y;    int length;}road[5000];bool cmp(Road a,Road b){    if(a.length < b.length)    return true;    else    return false;}int find_set(int i){    if(fa[i] == i) return i;    else return find_set(fa[i]);}int main(){    int m,n,i;// n为村庄数目 m为 n*(n - 1)/2.0    int result = 0;    while(scanf("%d",&n) > 0 && n != 0)    {        result = 0;        m = n * (n - 1) / 2;        for(i = 1; i <= n; i++) fa[i] = i;        for(i = 1; i <= m; i++)        scanf("%d%d%d",&road[i].x,&road[i].y,&road[i].length);        std::sort(road + 1,road + 1 + m,cmp);        for(i = 1; i <= m; i++)        {            int root_x = find_set(road[i].x);            int root_y = find_set(road[i].y);            if(root_x != root_y)            {            fa[root_y] = root_x;            result += road[i].length;            }        }        printf("%d\n",result);    }    return 0;}


0 0
原创粉丝点击