Source Code Problem: 2485 User: zhouxc Memory: 680K Time: 219MS Language: G++ Result: Accepted Source Code #include "stdio.h" typedef struct TableEntry{ bool Known; int Dist; }; TableEntry Table[501]; int t,n,map[501][501]; void InitTable() { for(int i=1;i<=n;i++) { Table[i].Known=false; Table[i].Dist=100000; } Table[1].Dist=0; } void Prim() { int k=0,max=0; while(1) { int record,min=1000000; for(int i=1;i<=n;i++) { if(!Table[i].Known&&min>Table[i].Dist) { min=Table[i].Dist; record=i; } // cout<<Table[i].Dist<<endl; } // cout<<min<<endl; Table[record].Known=true; if(max<min) max=min; k++; if(k==n) break; for(int i=1;i<=n;i++) if(!Table[i].Known&&Table[i].Dist>map[record][i]) Table[i].Dist=map[record][i]; } printf("%d/n",max); } int main() { //freopen("data.in","r",stdin); scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&map[i][j]); InitTable(); Prim(); } // while(1); return 0; }