[水][最小生成树] vijos 繁华的都市

2017-09-19  本文已影响0人  噩噩噩噩噩v

题目传送门:题目
codevs上应该也有

#include<bits/stdc++.h>
using namespace std;
int n,m;
struct note
{
    int s,v,w;
}e[1000100];
bool book[310000];
bool cmp(note a,note b)
{
    return a.w<b.w;
}
int fa[310000];
int ff(int x)
{
    return fa[x]=(fa[x]==x)?x:ff(fa[x]);
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    cin>>e[i].s>>e[i].v>>e[i].w;
    sort(e+1,e+m+1,cmp);
    int rest=n-1;
    int ans1=0,ans2=0;
    for(int i=1;i<=m;i++)
    fa[i]=i;
    for(int i=1;i<=m;i++)
    {
        
        if(!rest) break; 
        int p1,p2;
        p1=ff(e[i].s);
        p2=ff(e[i].v);
        if(p1==p2) continue;
        fa[p1]=p2;
        ans1++;
        rest--;
        ans2=e[i].w;
    }
cout<<ans1<<" "<<ans2;

    
return 0;
}
上一篇下一篇

猜你喜欢

热点阅读