题目链接:http://openoj.awaysoft.com:8080/judge/contest/view.action?cid=384#problem/J
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
#include <stdio.h>
#include < string.h>
int dis[ 110][ 110];
int vist[ 110];
int main()
{
int i,j,t,n;
while (~scanf( " %d ",&n))
{
__int64 s= 0;
for (i= 1;i<=n;i++)
for (j= 1;j<=n;j++)
scanf( " %d ",&dis[i][j]);
memset(vist, 0, sizeof(vist));
vist[ 1]= 1;
t=n- 1;
while (t--)
{
int m= 100010;
int pos;
for (i= 2;i<=n;i++)
if (!vist[i] && dis[ 1][i]<m)
{
pos=i;
m=dis[ 1][i];
}
vist[pos]= 1;
s+=m;
for (i= 2;i<=n;i++)
if (!vist[i] && dis[pos][i]<dis[ 1][i])
dis[ 1][i]=dis[pos][i];
}
printf( " %I64d\n ",s);
}
return 0;
}
#include < string.h>
int dis[ 110][ 110];
int vist[ 110];
int main()
{
int i,j,t,n;
while (~scanf( " %d ",&n))
{
__int64 s= 0;
for (i= 1;i<=n;i++)
for (j= 1;j<=n;j++)
scanf( " %d ",&dis[i][j]);
memset(vist, 0, sizeof(vist));
vist[ 1]= 1;
t=n- 1;
while (t--)
{
int m= 100010;
int pos;
for (i= 2;i<=n;i++)
if (!vist[i] && dis[ 1][i]<m)
{
pos=i;
m=dis[ 1][i];
}
vist[pos]= 1;
s+=m;
for (i= 2;i<=n;i++)
if (!vist[i] && dis[pos][i]<dis[ 1][i])
dis[ 1][i]=dis[pos][i];
}
printf( " %I64d\n ",s);
}
return 0;
}