1 #include<iostream> 2 #include<string.h> 3 #include<stdio.h> 4 using namespace std; 5 6 const int maxn=305; 7 const int INF=0xffffff; 8 9 int G[maxn][maxn]; 10 int a[maxn]; 11 int sum; 12 int n; 13 int vis[maxn]; 14 15 int tree() 16 { 17 for(int i=0;i<n;i++) 18 a[i]=INF; 19 a[0]=0; 20 for(int i=0;i<n;i++) 21 { 22 int min=INF; 23 int ii=0; 24 25 for(int j=0;j<n;j++) 26 if(vis[j]==0&&a[j]<min) 27 { 28 min=a[j]; 29 ii=j; 30 } 31 32 vis[ii]=1; 33 sum+=a[ii]; 34 35 for(int k=0;k<n;k++) 36 if(G[ii][k]<a[k]) 37 a[k]=G[ii][k]; 38 } 39 } 40 41 int main() 42 { 43 std::ios::sync_with_stdio(false); 44 //freopen("aa.txt","r",stdin); 45 while(cin>>n) 46 { 47 memset(vis,0,sizeof(vis)); 48 49 for(int i=0;i<n;i++) 50 { 51 for(int j=0;j<n;j++) 52 { 53 cin>>G[i][j]; 54 } 55 } 56 57 sum=0; 58 tree(); 59 cout<<sum<<endl; 60 } 61 }