#include "bits/stdc++.h"
#include "tuple"
int a[100008], b[100008];
std::vector<std::tuple<int, int, int>> vector;
int new_find(int x) {
if (a[x] == x)
return x;
a[x] = new_find(a[x]);
return a[x];
}
int main() {
int n, m;
std::cin >> n >> m;
int x, y, v;
for (int i = 0; i < n; ++i)
a[i] = i;
for (int i = 0; i < m; i++) {
std::cin >> x >> y >> v;
vector.emplace_back(x, y, v);
}
std::sort(vector.begin(), vector.end(),
[](std::tuple<int, int, int> x, std::tuple<int, int, int> y) -> bool {
return std::get<2>(x) > std::get<2>(y);
});
for (auto x: vector) {
if ([&x]() -> bool {
return new_find(std::get<0>(x)) == new_find(std::get<1>(x));
}()) {
std::cout << std::get<2>(x);
return 0;
} else {
if (!b[std::get<0>(x)])
b[std::get<0>(x)] = std::get<1>(x);
else
a[new_find(a[b[std::get<0>(x)]])] = new_find(std::get<1>(x));
if (!b[std::get<1>(x)])
b[std::get<1>(x)] = std::get<0>(x);
else
a[new_find(a[b[std::get<1>(x)]])] = new_find(std::get<0>(x));
}
}
std::cout << "0";
return 0;
}
洛谷P1525 [NOIP2010 提高组] 关押罪犯进阶解法
最新推荐文章于 2023-07-17 08:53:36 发布