讨论 / 题解(用二维数组,100还受得了)
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;

}

查看更多回复
提交回复