1392:繁忙的都市(city)

地址:http://ybt.ssoier.cn:8088/problem_show.php?pid=1392
#include<bits/stdc++.h>
using namespace std;

int n,m,num;
struct edge{
    int a,b,c;
}mp[90005];//边存放 

bool cmp(edge a,edge b){//比较函数 
    return a.c<b.c;
}

int father[305];
int findfather(int x){//并查集 
    if(father[x]!=x) father[x]=findfather(father[x]);
    else return father[x];
}

int kruskal(int n,int m){//核心代码 
    int maxe=-1;
    num=0;
    for(int i=1;i<=n;i++){
        father[i]=i;
    }
    sort(mp+1,mp+m+1,cmp);
    for(int i=1;i<=m;i++){
        if(findfather(mp[i].a)!=findfather(mp[i].b)){
            father[findfather(mp[i].a)]=findfather(mp[i].b);
            num++;
            maxe=max(maxe,mp[i].c);
            if(num==n-1) break;
        }
    }
    return maxe;
}

int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        int u,v,w;
        cin>>u>>v>>w;
        mp[i].a=u;
        mp[i].b=v;
        mp[i].c=w;
    }
    int MAXE=kruskal(n,m);
    cout<<num<<" ";
    cout<<MAXE;
    return 0;
}

 

posted @ 2021-04-10 11:46  Wag_Ho  阅读(392)  评论(0编辑  收藏  举报