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

hdu 1233 还是畅通工程

2018年12月31日 ⁄ 综合 ⁄ 共 596字 ⁄ 字号 评论关闭
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int m,n,f[100];
struct mapy
{
    int x,y,len;
}map[5000];
int cmp(const void *a,const void *b)
{
    return (*(struct mapy *)a).len-(*(struct mapy *)b).len;
}
int find(int a)
{
    if(a!=f[a])
        f[a]=find(f[a]);
    return f[a];
}
void dj()
{
    int i,num,sum;
    for(i=0;i<100;i++)
        f[i]=i;
    qsort(map,m,sizeof(map[0]),cmp);
    sum=0;num=0;
    for(i=0;i<m;i++)
    {
        if(find(map[i].x)!=find(map[i].y))
        {
            sum=sum+map[i].len;
            f[find(map[i].x)]=find(map[i].y);
            num++;
        }
        if(num==n-1)
            break;
    }
    printf("%d\n",sum);
}
int main()
{
        while(scanf("%d",&n),n)
    {
     
        for(m=0;m<n*(n-1)/2;m++)
            scanf("%d%d%d",&map[m].x,&map[m].y,&map[m].len);
            dj();
    }
    return 0;
}

抱歉!评论已关闭.