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;
}

posted @ 2024-03-06 23:25  纯粹的  阅读(26)  评论(0)    收藏  举报