zoj 1372 (最小生成树)

来源:互联网 发布:身份证借别人开淘宝 编辑:程序博客网 时间:2024/05/20 21:45
昨天把最小生成树搞明白了,做这题就随意的多了
#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#include<algorithm>using namespace std;int father[55];int p,r,sum;typedef struct{     int x,y;     int len;     }edge;edge num[110];bool cmp(edge a,edge b){     return    a.len<b.len; }int find(int x){     return father[x]==x?x:find(father[x]);     }void Kruskal(){     int i;     for(i=0;i<p;i++)          father[i]=i;     sort(num,num+r,cmp);     int a,b;     sum=0;     for(i=0;i<r;i++)     {          a=find(num[i].x);          b=find(num[i].y);          if(a!=b)          {               father[b]=a;               sum+=num[i].len;                              }          }  }int main(){     int a,b,l,i;     while(scanf("%d",&p)&&p)     {          scanf("%d",&r);          for(i=0;i<r;i++)          {               scanf("%d%d%d",&a,&b,&l);               num[i].x=a;               num[i].y=b;               num[i].len=l;               }           Kruskal();          printf("%d\n",sum);         }     return 0;}

原创粉丝点击