hdu 1301 Jungle Roads

来源:互联网 发布:vegas pro for mac 编辑:程序博客网 时间:2024/05/01 10:12

链接:点击打开链接

#include<iostream>#include<cstring>using namespace std;#define INF 10000000int edges[105][105],vexset[105],lowcost[105];int n;void prim(int v){  int i,j,min,k,sum;  for(i=2;i<=n;i++)  {   lowcost[i]=edges[v][i];   vexset[i]=0;  }  vexset[v]=1;  sum=0;  for(i=2;i<=n;i++)  {    min=INF;    for(j=2;j<=n;j++)    {      if(vexset[j]==0&&lowcost[j]<min)      {        min=lowcost[j];        k=j;      }    }    if(min!=INF)        sum+=min;    v=k;    vexset[v]=1;    for(j=2;j<=n;j++)    {      if(vexset[j]==0&&lowcost[j]>edges[v][j])          lowcost[j]=edges[v][j];    }  }  printf("%d\n",sum);}int main(){  int i,x,y,j;   char b,c;   while(~scanf("%d",&n)&&n)   {       for(i=0;i<105;i++)           for(j=0;j<105;j++)               edges[i][j]=INF;     for(i=0;i<n-1;i++)     {     cin>>b>>x;      while(x--)     {        cin>>c>>y;        edges[b-'A'+1][c-'A'+1]=y;        edges[c-'A'+1][b-'A'+1]=y;     }     }     prim(1);        }   return 0;}

也是模板题

原创粉丝点击