hdu1233还是畅通工程_最小生成树

来源:互联网 发布:大数据 数据挖掘 编辑:程序博客网 时间:2024/04/30 05:49

/*
分析:
    第一次写prim,算半个模板吧。
注意不要人为的先把ans=E[0].len,万一读入的边的数量是0呢?血淋淋的WA啊……

                                                      2012-06-17
*/
#include"stdio.h"
#include"stdlib.h"
struct A
{
 int a,b;
 int len;
}E[4855];
int cmp(const struct A *a,const struct A *b)
{
 return a->len-b->len;
}
int main()
{
 int n;
 int i;
 int temp;
 int ans;
 int flag;
 int hash[111];
 
 while(scanf("%d",&n),n)
 {
  temp=n*(n-1)/2;
  for(i=0;i<temp;i++) scanf("%d%d%d",&E[i].a,&E[i].b,&E[i].len);

  qsort(E,temp,sizeof(E[0]),cmp);

  for(i=1;i<=n;i++) hash[i]=1;

  hash[E[0].a]=0;
  ans=0;
  for(i=0;i<temp;i++)
  {
   flag=hash[E[i].a]+hash[E[i].b];
   if(flag==1)
   {
    ans+=E[i].len;
    hash[E[i].a]=hash[E[i].b]=0;
    i=0;
   }
  }

  printf("%d\n",ans);
 }
 return 0;
}