FZU 2233 ~APTX4869 贪心+并查集

时间:2023-03-09 03:27:00
FZU 2233 ~APTX4869 贪心+并查集

分析:http://blog.csdn.net/chenzhenyu123456/article/details/51308460

#include <cstdio>
#include <cstring>
#include <queue>
#include <set>
#include <map>
#include <stack>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
typedef long long LL;
typedef pair<int,int>pii;
const int N=8e2+;
const int INF=0x3f3f3f3f;
struct Node{
int u,v,w;
bool operator<(const Node &rhs)const{
return w<rhs.w;
}
}p[N*N];
int tot,n,w,fa[N];
int find(int x){
return x==fa[x]?x:fa[x]=find(fa[x]);
}
int main(){
while(~scanf("%d",&n)){
tot=;
for(int i=;i<=n;++i){
fa[i]=i;
for(int j=;j<=n;++j){
scanf("%d",&w);
if(i<j){++tot,p[tot].u=i,p[tot].v=j,p[tot].w=w;}
}
}
sort(p+,p++tot);
int ans=;
for(int i=;i<=tot;++i){
int u=find(p[i].u),v=find(p[i].v);
if(u!=v){
fa[u]=v;
ans=p[i].w;
}
}
printf("%d\n",ans);
}
return ;
}