社区讨论
瑾时后人
P3385【模板】负环参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mjy41d36
- 此快照首次捕获于
- 2026/01/03 17:38 2 个月前
- 此快照最后确认于
- 2026/01/07 12:45 2 个月前
注意本题的边数不是m
如代码
CPP#include <bits/stdc++.h>
using namespace std;
int T;
struct edge {
int from;
int to;
int w;
};
int main() {
cin >> T;
while (T--) {
int n, m;
cin >> n >> m;
vector<edge> e;
int d[4001];
memset(d, 0x7f, sizeof (d));
d[1] = 0;
for (int i = 1; i <= m; i++) {
int u, v, w;
cin >> u >> v >> w;
if (w >= 0) {
e.push_back({u, v, w});
e.push_back({v, u, w});
} else {
e.push_back({u, v, w});
}
}
for (int i = 1; i < n; i++) {
for (int j = 0; j < e.size(); j++) {// 此处不是j < m
if (d[e[j].from] != 0x7f7f7f7f) {
d[e[j].to] = min(d[e[j].to], d[e[j].from] + e[j].w);
}
}
}
bool flag = true;
for (int j = 0; j < e.size(); j++) {// 此处同理
if (d[e[j].from] != 0x7f7f7f7f && d[e[j].to] > d[e[j].from] + e[j].w) {
flag = false;
break;
}
}
if (flag) {
cout << "NO\n";
} else {
cout << "YES\n";
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...