社区讨论
Kruskal + 并查集 求调
P1396营救参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo36w0nv
- 此快照首次捕获于
- 2023/10/24 01:46 2 年前
- 此快照最后确认于
- 2023/10/24 01:46 2 年前
rt, Kruskal + 并查集 求调。
CPP#include <bits/stdc++.h>
using namespace std;
const int _ = 1e5 + 1;
//int maxx=INT_MIN;
struct Edge
{
int u, v, w;
} b[_];
bool cmp(Edge a, Edge b)
{
return a.w < b.w;
}
int fa[_];
int __find(int x)
{
if (fa[x] == x) return x;
return fa[x] = __find(fa[x]);
}
signed main()
{
int n, m, s, t;
cin >> n >> m >> s >> t;
for (int i = 1; i <= n; i++)
{
int u, v, w;
cin >> u >> v >> w;
b[i].u = u, b[i].v = v, b[i].w = w;
// __union(u, v);
}
sort(b + 1, b + 1 + m, cmp);
for (int i = 1; i <= m; i++)
{
int fx = __find(b[i].u), fy = __find(b[i].v);
if (fx == fy) continue;
if (__find(s) == __find(t)) return cout << b[i].w << endl, 0;
}
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...