【HDU1233】还是畅通工程【prim水】

来源:互联网 发布:linux 回到根目录 编辑:程序博客网 时间:2024/05/01 06:07

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1233

#include <stdio.h>#include <string.h>#define inf 0x6fffffint dis[105];int map[105][105];int vis[105];int sum,n;void prim(){int i,j,k,min;for(i=1;i<=n;i++)dis[i]=map[1][i];vis[1]=1;for(i=1;i<=n;i++){min=inf;for(j=1;j<=n;j++){if(vis[j]==0 &&dis[j]<min){min=dis[j];k=j;}}if(min==inf)break;vis[k]=1;sum+=min;for(j=1;j<=n;j++){if(vis[j]==0 &&dis[j]>map[k][j])dis[j]=map[k][j];}}}int main(){int i,j,a,b,l;   while(~scanf("%d",&n)&&n)   {   sum=0;   for(i=1;i<=n;i++)   for(j=1;j<=n;j++)   map[i][j]=inf;   for(i=1;i<=n*(n-1)/2;i++)   {   scanf("%d%d%d",&a,&b,&l);   if(map[a][b]>l)   map[a][b]=map[b][a]=l;   }   memset(vis,0,sizeof(vis));   prim();   printf("%d\n",sum);   }   return 0;}

0 0
原创粉丝点击