hdu1233 还是畅通工程(Prim备忘)
来源:互联网 发布:js水泥基防水涂料价格 编辑:程序博客网 时间:2024/06/02 09:58
#include <cstdio>#include<cstring>int road[102][102],key[102];const int M=0x7fffffff;bool s[102];int min(int a,int b){ return a<b?a:b;}int prim(int n){ int i; memset(s,false,sizeof(s)); for(i=1;i<=n;i++) key[i]=M; int cur(1),m,p,cost=0; s[1]=true; for(int j=1;j<n;j++) { m=M; for(i=2;i<=n;i++) { if(s[i]==false) { key[i]=min(key[i],road[cur][i]); if(m>key[i]) { m=key[i]; p=i; } } } cur=p; s[cur]=true; } for(i=2;i<=n;i++) cost+=key[i]; return cost;}int main(){ int n,i; while(scanf("%d",&n),n) { memset(road,-1,sizeof(road)); int m=n*(n-1)/2; for(i=1;i<=m;i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); road[a][b]=road[b][a]=c; } printf("%d\n",prim(n)); } return 0;}