#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct edge{
int u, v, t;
edge(int a, int b, int c)
{
u = a;
v = b;
t = c;
}
};
vector<edge>e;
int fa[2001]; // Disjoint set
bool cmp(edge a, edge b)
{
return a.t < b.t;
}
void init(int n)
{
for (int i = 0; i <= n; i++)
{
fa[i] = i;
}
}
int find_fa(int x)
{
// path compress
if (fa[x] != x)
{
fa[x] = find_fa(fa[x]);
}
return fa[x];
}
void merge(int x, int y)
{
x = find_fa(x);
y = find_fa(y);
if (x != y)
fa[y] = x;
}
int main()
{
int n, m, uu, vv, tt;
cin >> n >> m;
init(n + 10);
for (int i = 1; i <= m; i++)
{
cin >> uu >> vv >> tt;
e.push_back(edge(uu, vv, tt));
}
stable_sort(e.begin(), e.end(), cmp);
for (int i = 0; i < e.size(); i++)
{
if (fa[e[i].u] != fa[e[i].v])
{
merge(e[i].u, e[i].v);
n--;
if (n == 1)
{
cout << e[i].t << endl;
return 0;
}
}
}
cout << -1 << endl;
return 0;
}
就是用并查集,只过了第一个点,样例也是对的,但是不知道为什么wa剩下九个