标签:输入 return algo together inpu type ace res logical
题目:
Description
Input
Output
Sample Input
4 0 4 9 21 4 0 8 17 9 8 0 16 21 17 16 0
Sample Output
28
思路:
最小生成树模板题
用prim算法
多组输入 注意数组清空
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf=0x3f3f3f3f;
const int maxn=110;
int n,tmp;
int mp[maxn][maxn],dis[maxn],vis[maxn];
int main(){
while(~scanf("%d",&n)){
memset(mp,0,sizeof(mp));
memset(dis,0,sizeof(dis));
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++){
dis[i]=inf;
for(int j=1;j<=n;j++){
scanf("%d",&mp[i][j]);
}
}
for(int i=1;i<=n;i++){
dis[i]=mp[1][i];
}
dis[1]=0;
vis[1]=1;
int sum=0;
for(int i=1;i<=n;i++){
tmp=inf;
int minn=inf;
for(int j=1;j<=n;j++){
if(vis[j]==0 && dis[j]<minn){
tmp=j;
minn=dis[j];
}
}
if(tmp==inf) break;
vis[tmp]=1;
sum+=minn;
for(int j=1;j<=n;j++){
if(vis[j]==0 && dis[j]>mp[tmp][j])
dis[j]=mp[tmp][j];
}
}
printf("%d\n",sum);
}
return 0;
}
标签:输入 return algo together inpu type ace res logical
原文地址:https://www.cnblogs.com/whdsunny/p/10528507.html