ccf 201703-4 地铁修建

来源:互联网 发布:mac手绘软件有哪些 编辑:程序博客网 时间:2024/04/28 05:38

http://118.190.20.162/view.page?gpid=T54
并查集,类似最小生成树的套路

#include<iostream>#include<vector>#include<algorithm>using namespace std;int pre[100005];int findroot(int index) {    if (pre[index] != index) pre[index] = findroot(pre[index]);    return pre[index];}void _add(int a, int b) {    int x = findroot(a);    int y = findroot(b);    pre[x] = pre[y] = min(x, y);}class AA {public:    int a, b, c;    bool operator<(const AA x)const {        return c < x.c;    }};vector<AA> all;int main(){    int n, m;    cin >> n >> m;    AA x;    while (m--) {        cin >> x.a >> x.b >> x.c;        all.push_back(x);    }    sort(all.begin(), all.end());    for (int i = 1; i <= n; ++i)        pre[i] = i;    for (int i = 0; i < all.size(); ++i) {        _add(all[i].a, all[i].b);        if (findroot(n) == 1) { cout << all[i].c << endl; return 0; }    }}