现在的位置: 首页 > 综合 > 正文

hdu 1233 还是畅通工程

2017年05月27日 ⁄ 综合 ⁄ 共 518字 ⁄ 字号 评论关闭

很简单的一道题,代码附上:

#include<stdio.h>
#include<algorithm>
using namespace std;
int num[10002];
struct road
{
    int x;
    int y;
    int len;
} p[10001];
int cmp(struct road a,struct road b)
{
    return a.len<b.len;
}
int find(int a)
{
    return a==num[a]?a:find(num[a]);
}
int main()
{
    int n,m;
    while(scanf("%d",&n),n)
    {
        int i,a,b,res=0;
        for(i=0; i<(n*(n-1))/2; i++)
            scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].len);
        sort(p,p+(n*(n-1))/2,cmp);
        for(int j=1; j<=n; j++)
            num[j]=j;
        for(int j=0; j<(n*(n-1))/2; j++)
        {
            a=find(p[j].x);
            b=find(p[j].y);
            if(a!=b)
            {
                num[a]=b;
                res+=p[j].len;
            }
        }
        printf("%d\n",res);
    }
    return 0;
}

【上篇】
【下篇】

抱歉!评论已关闭.