Agri-Net POJ - 1258 prim
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int N=110; #define inf 1<<29 int map[N][N],n; int dist[N]; bool st[N]; void prim(){ memset(dist,0x3f,sizeof dist); memset(st,0,sizeof st); int res=0; for(int i=1;i<=n;i++) { int t=-1; for(int j=1;j<=n;j++) if(!st[j]&&(t==-1||dist[t]>dist[j])) t=j; if(i!=1) res+=dist[t]; st[t]=true; for(int j=1;j<=n;j++) dist[j]=min(dist[j],map[t][j]); } cout<<res<<endl; } int main(){ while(cin>>n&&n){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>map[i][j]; prim(); } return 0; }