社区讨论
AC on#1#3#4,其他TLE
P4234最小差值生成树参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mm5qrlla
- 此快照首次捕获于
- 2026/02/28 11:08 2 周前
- 此快照最后确认于
- 2026/03/02 11:05 上周
CPP
#include <bits/stdc++.h>
using namespace std;
long long int a, b, ans, fa[200001], maxcost;
int fnd(int i) {
if (fa[i] == i)
return i;
else
return fa[i] = fnd(fa[i]);
}
struct oo {
long long int u, v, w;
} edge[200001];
bool cmp(oo x, oo y) { return x.w < y.w; }
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ans = LONG_LONG_MAX;
cin >> a >> b;
for (int i = 1; i <= b; i++) {
cin >> edge[i].u >> edge[i].v >> edge[i].w;
}
sort(edge + 1, edge + b + 1, cmp);
for (int i = 1; i <= b; i++) {
maxcost = 0;
int cnt = 0;
for (int j = 1; j <= a; j++) {
fa[j] = j;
}
for (int j = i; j <= b; j++) {
int p = fnd(edge[j].u);
int q = fnd(edge[j].v);
if (p == q) {
continue;
}
maxcost = max(maxcost, edge[j].w);
fa[p] = q;
cnt++;
if (cnt == a - 1)
break;
}
if (cnt != a - 1) {
continue;
}
ans = min(maxcost - edge[i].w, ans);
}
if (ans != LONG_LONG_MAX)
cout << ans;
else
cout << -1;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...