1 #include <iostream>
2 #include <cstdio>
3 #include <cmath>
4 #include <cstring>
5 #include <algorithm>
6 #include <queue>
7 #include <stack>
8 #include <vector>
9 #include <iomanip>
10 #include <map>
11 using namespace std;
12 const int maxn=1e3+10;
13 int n,m,g[maxn][maxn],vis[maxn],d[maxn];
14 int main(int argc, char *argv[])
15 {
16 scanf("%d",&n);
17 for(int i=1;i<=n;i++)
18 for(int j=1;j<=n;j++)
19 scanf("%d",&g[i][j]);
20 memset(d,0x3f3f3f3f,sizeof(d));
21 d[1]=0;
22 int ans=0;
23 for(int i=1;i<=n;i++)
24 {
25 int end=-1;
26 for(int j=1;j<=n;j++)
27 {
28 if(!vis[j]&&(end==-1||d[end]>d[j]))
29 end=j;
30 }
31 ans+=d[end];
32 vis[end]=1;
33 for(int j=1;j<=n;j++)
34 {
35 if(!vis[j]&&d[j]>g[end][j])
36 d[j]=g[end][j];
37 }
38 }
39 printf("%d\n",ans);
40 return 0;
41 }