关押罪犯(种类并查集)

放肆的年华 提交于 2020-02-24 06:32:09

关押罪犯

//洛谷P1525关押罪犯

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int p[N << 1];
struct M
{
    int a,b,c;
    bool operator < (const M & T)const 
    {
        return c > T.c;
    }
};
int find(int x)
{
    if(p[x] != x)p[x] = find(p[x]);
    return p[x];
}


int main()
{
    int n,m;
    cin >> n >> m;
    for(int i = 1;i <= n;i++)p[i] = i;
    M d[m];
    for(int i = 0;i < m;i++)
    {
        scanf("%d%d%d",&d[i].a,&d[i].b,&d[i].c);
    }
    sort(d,d+m);
    for(int i = 1;i <= 2 * n;i++)p[i] = i;
    for(int i = 0;i < m;i++)
    {
        int x = find(d[i].a),y = find(d[i].b);
        if(x == y){cout << d[i].c;return 0;}
        p[x] = find(d[i].b+n);
        p[y] = find(d[i].a+n);
    }
    cout << 0;
    return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!