只会输出no,不会输出yes。求调
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
const int MAXN = 2e3 + 5;
struct edge {int v, w;};
vector<edge> G[MAXN];
queue<int> q;
int dis[MAXN], cnt[MAXN];
bool vis[MAXN], flag;
void init() {
flag = false;
memset(dis, 0x3f, sizeof(dis));
memset(cnt, 0, sizeof(cnt));
memset(vis, 0, sizeof(vis));
while (!q.empty()) q.pop();
}
bool spfa() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; ++i) G[i].clear();
for (int i = 1; i <= m; ++i) {
int u, v, w;
cin >> u >> v >> w;
G[u].push_back({v, w});
if (w >= 0) G[v].push_back({u, w});
}
dis[0] = 0;
vis[0] = true;
q.push(0);
while (!q.empty()) {
int u = q.front();
q.pop();
vis[u] = false;
for (auto x : G[u]) {
int v = x.v, w = x.w;
if (dis[u] + w < dis[v]) {
dis[v] = dis[u] + w;
cnt[v] = cnt[u] + 1;
if (cnt[v] >= n) return true;
if (!vis[v]) {
q.push(v);
vis[v] = true;
}
}
}
}
return false;
}
int main() {
int t;
cin >> t;
while (t--) {
init();
if (spfa()) cout << "Yes\n";
else cout << "No\n";
}
return 0;
}