Dann. 2016-02-23 01:01:57
点我顶贴
收藏
删除
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int a,b,cnt = 1,n,Min = 1e8;
int f[101][101],vis[101];
long long ans;
int main()
{
scanf("%d",&n);
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= n;j++)
{
scanf("%d",&f[i][j]);
}
}
vis[1] = 1;
while(cnt < n)//判断走完?
{
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= n;j++)
{
if(vis[i]/*可以不要*/ && !vis[j]/*没有到该点*/ && f[i][j] != 0/*可以不要*/ && Min > f[i][j])
{
Min = f[i][j];//寻找最优
a = i;
b = j;//记录到达点
}
}
}
vis[b] = 1;//标记到达
cnt++;//增加一个到达点
ans += Min;
Min = 1e8;//归位
}
printf("%lld",ans);
return 0;
}