标签:you ros lan oss only sla flat tput printf
题目 :
Description
Input
Output
Sample Input
1 3 0 990 692 990 0 179 692 179 0
Sample Output
692
题意:
求生成最小生成树时 所有边中最长的边的长度
思路:
把prim算法中 sum+=minn 的部分改为 sum=max(sum,minn) 即可
代码:
#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=550;
int t,n,tmp;
int mp[maxn][maxn],dis[maxn],vis[maxn];
int main(){
scanf("%d",&t);
for(int id=1;id<=t;id++){
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=max(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;
}
标签:you ros lan oss only sla flat tput printf
原文地址:https://www.cnblogs.com/whdsunny/p/10529392.html