[水][最小生成树] 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;
}