社区讨论
能过案例,测评全错,呜呜呜
P3366【模板】最小生成树参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mhjah5gh
- 此快照首次捕获于
- 2025/11/03 23:22 4 个月前
- 此快照最后确认于
- 2025/11/03 23:22 4 个月前
代码按照模版写的,能过案例,但是测评全错我不理解
本人新手小白,求大神调谢谢
CPP#include <bits/stdc++.h>
using namespace std;
const int N = 200005, INF = 0x3f;
int e[N], ne[N], h[N], w[N], idx;
int st[N], dis[N];
void add(int a, int b, int c) {
e[idx] = b;
ne[idx] = h[a];
h[a] = idx;
w[idx] = c;
idx++;
}
int n, m;
long long prim() {
memset(dis, INF, sizeof dis);
long long ans = 0;
for (int i = 0; i < n; i++) {
int t = -1;
for (int j = 1; j <= n; j++) {
if (!st[j] && (t == -1 || dis[t] > dis[j])) t = j;
}
if (i && dis[t] == INF) return INF;
if (i) ans += dis[t];
st[t] = 1;
for (int j = h[t]; j != -1; j = ne[j]) {
int p = e[j];
dis[p] = min(dis[p], w[j]);
}
}
return ans;
}
int main() {
ios::sync_with_stdio(0);
std::cin.tie(0);
cin >> n >> m;
memset(h, -1, sizeof h);
for (int i = 0; i < m; i++) {
int a, b, c;
cin >> a >> b >> c;
add(a, b, c);
}
long long ans = prim();
if (ans == INF) cout << "orz";
else cout << ans;
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...