P2330 [SCOI2005] 繁忙的都市
题解
最小生成树和最短路不一样的兄弟
code
#include<bits/stdc++.h>
using namespace std;
int fa[306]={0};
int finds(int now){return (fa[now]==now?now:finds(fa[now]));}
struct node
{
int x,y,v;
bool operator<(const node &b) const {return v<b.v;}
}road[8008];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=1;i<=m;i++)
{
cin>>road[i].x>>road[i].y>>road[i].v;
}
cout<<n-1<<" ";
sort(road+1,road+1+m);
int ans=0;
for(int i=1;i<=m;i++)
{
int x=road[i].x,y=road[i].y,v=road[i].v;
if(finds(x)!=finds(y))
{
fa[finds(x)]=finds(y);
ans=max(ans,v);
n--;
}
if(n==1) break;
}
cout<<ans<<endl;
return 0;
}

浙公网安备 33010602011771号