HDU 1233还是畅通工程 (Kruskal)

来源:互联网 发布:软件行业营改增政策 编辑:程序博客网 时间:2024/05/17 07:30

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1233

代码:

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node{    int u;    int v;    int w;}e[10005];int n;int f[10000];int cmp(node a,node b){    return a.w<b.w;}int init(){    for(int i=0;i<=n;i++)        f[i]=i;}int getf(int v){    if(f[v]==v)        return v;    else    {        f[v]=getf(f[v]);        return f[v];    }}int merge(int v,int u){    int t1,t2;    t1=getf(v);    t2=getf(u);    if(t1!=t2)    {        f[t2]=t1;        return 1;    }    return 0;}int main(){    while(~scanf("%d",&n))    {        if(n==0)            break;        init();        int m=n*(n-1)/2;        for(int i=0;i<m;i++)        {            scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);        }        sort(e,e+m,cmp);        int count=0;        int sum=0;        for(int i=0;i<m;i++)        {            if(merge(e[i].u,e[i].v))            {                //printf("1\n");                count++;                sum=sum+e[i].w;            }            if(count==n-1)            {                break;            }        }        printf("%d\n",sum);    }}


0 0
原创粉丝点击