修复公路
2024年12月25日小于 1 分钟
#include <bits/stdc++.h>
using namespace std;
int n, m;
struct Line
{
int x, y, t;
} a[100000 + 5];
bool cmp(Line a, Line b)
{
return a.t < b.t;
}
int fa[1000 + 5];
int cnt[1000 + 5];
int findFa(int x)
{
if (x == fa[x])
return x;
return fa[x] = findFa(fa[x]);
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= m; i++)
cin >> a[i].x >> a[i].y >> a[i].t;
sort(a + 1, a + m + 1, cmp);
for (int i = 1; i <= n; i++)
{
fa[i] = i;
cnt[i] = 1;
}
for (int i = 1; i <= m; i++)
{
int faX = findFa(a[i].x);
int faY = findFa(a[i].y);
if (faX != faY)
{
if (cnt[faX] < cnt[faY])
swap(faX, faY);
fa[faY] = faX;
cnt[faX] += cnt[faY];
}
if (cnt[faX] == n)
{
cout << a[i].t;
return 0;
}
}
cout << "-1\n";
return 0;
}