社区讨论
朴素Prim,30分求助(过了最后三个点)
P3366【模板】最小生成树参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo1tzr93
- 此快照首次捕获于
- 2023/10/23 02:57 2 年前
- 此快照最后确认于
- 2023/11/03 03:30 2 年前
CPP
#include<iostream>
#include<cstring>
using namespace std;
int g[5005][5005], minn[5005];
bool b[5005];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, m, sum = 0;
cin >> n >> m;
for(int i = 1; i <= m; ++i) {
int x, y, z;
cin >> x >> y >> z;
g[x][y] = z;
g[y][x] = z;
}
memset(minn, 0x3f, sizeof(minn));
minn[1] = 0;
for(int i = 1; i <= n; ++i) {
int u = 0;
for(int j = 1; j <= n; ++j) {
if(!b[j] && minn[j] < minn[u]) u = j;
}
if(u == 0) {
cout << "orz";
return 0;
}
b[u] = 1;
sum += minn[u];
for(int j = 1; j <= n; ++j) {
if(!b[j] && g[u][j] && g[u][j] < minn[j]) minn[j] = g[u][j];
}
}
cout << sum;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...