BitComet 旗下网站

转到日志
相关贴吧:
acm of zju

zju1372 最小生成树

楼主 发表于:2008-09-02 20:34:31 [回复]

/*Networking  最小生成树
2008-09-02 20:13:14 Accepted 1372 C++ 00:00.03 852K 天将降大任于我
*/
#include<iostream>
using namespace std;
const int N=50;
int s[N+2][N+2];bool  check[N+2];
int main()
{
 int p,r,i,j,a,b,c,Min,t,sum;
 while(scanf("%d",&p)!=EOF)
 {  
  if(p==0) break;
  scanf("%d",&r);
  if(r==0) {printf("0\n");continue;}
  memset(s,102,sizeof(s));
  for(i=0;i<r;i++)
  {
   scanf("%d%d%d",&a,&b,&c);
   if(s[a][b]>c) {s[a][b]=c;s[b][a]=c;} //输入时有重复的边但是权值大的舍去
  }
  memset(check,0,sizeof(check));
  check[1]=1;sum=0;
        for(int k=1;k<p;k++) //总共有p-1条边
  {
   Min=101;
   for(i=1;i<=p;i++)   //从第一个结点开始寻找与第一个结点相邻接的最小的权值,并记下该权值对应的结点
   if(check[i])
    for(j=1;j<=p;j++)
    {
     if(!check[j]&&s[i][j]<Min)
     {  Min=s[i][j]; t=j;
     }
    }
   sum+=Min;check[t]=1;
    
  }
        printf("%d\n",sum);
 }
 return 0;
}

心难泰,世风坏,旧时正气今何在?正义寡,人情薄,闻道虽多,茅塞不开。怪!怪!怪! 空等待,几多载,冲出重围人心快!暴雨打,狂风袭,任他折磨,此志难改。耐!耐!耐!

1楼 发表于:2008-09-02 20:38:44 [回复]


死ぬようにしましょう バカ野郎

2楼 发表于:2008-09-02 20:41:23 [回复]


3楼 发表于:2008-09-03 08:19:41 [回复]

弓虽


Something ends, something begins, and something never changes......

 

您现在还没有登录,请在登录后发贴