BitComet 旗下网站

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

zju1406 最小生成树

楼主 发表于:2008-08-23 14:16:40 [回复]

/*Jungle Roads   最小生成树
2008-08-23 14:09:18 Accepted 1406 C++ 00:00.00 836K 天将降大任于我
输入单个字符时用scanf("%c",&m),结果没有输出,用 scanf("%s",&m)就可以,不知为何
*/
#include<iostream>
using namespace std;
int main()
{
 int n,k,i,p,j,Min,t,sum; char m,o;
 int w[27][27],mst[27];
 while(scanf("%d",&n)&&n)
 {   
 for(i=1;i<=n;i++)
  {   mst[i]=0;
   for(j=1;j<=n;j++)
     w[i][j]=w[j][i]=105;
  }   
  for(i=1;i<=n-1;i++)
  {
   scanf("%s%d",&m,&k);
   for(j=1;j<=k;j++)
   {
    scanf("%s%d",&o,&p);
             w[m-64][o-64]=p;w[o-64][m-64]=p; 
   }
  }
  mst[1]=1; sum=0;
  for(i=1;i<=n-1;i++)
  {
   Min=102;
   for(j=1;j<=n;j++)
   {
    if(mst[j])
     for(k=1;k<=n;k++)
      if(mst[k]==0&&w[j][k]<Min)
      {
       Min=w[j][k];
                      t=k;  
      }
   }
   mst[t]=1;
            sum+=Min; 
  }

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

 


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

 

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