1 #include <cstdio>
2 #include <cstring>
3 using namespace std;
4 int sum;
5 int map[101][101];
6 bool vis[101];
7 int des[101];
8
9 void prim(int v,int e)
10 {
11 int i,j;
12 memset(vis,0,sizeof(vis));
13 for(i=1;i<=v;i++)
14 des[i]=map[1][i];
15 vis[1]=1;
16 des[1]=0;
17 int num=1;
18 while(num<v)
19 {
20 int min=999999,k;
21 for(i=2;i<=v;i++)
22 {
23 if(des[i]<min&&vis[i]==0)
24 {
25 min=des[i]; k=i;
26 }
27 }
28 sum+=min;
29 vis[k]=1;
30 num++;
31 for(i=2;i<=v;i++)
32 if(map[k][i]<des[i]&&vis[i]==0)
33 des[i]=map[k][i];
34 }
35 }
36
37
38 int main()
39 {
40 int n;
41 scanf("%d",&n);
42 for(int i=1;i<=n;i++)
43 for(int j=1;j<=n;j++)
44 {
45 scanf("%d",map[i]+j);
46 }
47 int e=0;
48 for(int i=1;i<=n;i++)
49 for(int j=1;j<=j;j++)
50 if(map[i][j])
51 e++;
52 sum=0;
53 prim(n,e);
54 printf("%d\n",sum);
55 return 0;
56 }
57