#include <bits/stdc++.h>
#define p_b push_back
#define ft first
#define nd second
#define pii pair<int, int>
#define pll pair<long long, long long>
using namespace std;
typedef long long ll;
vector<pii> g[2500];
int n, m;
ll dist[2500], mark[2500], d[2500];
void solve()
{
cin >> n >> m;
for (int i = 1; i <= 2500; i++) g[i].clear();
for (int i = 1; i <= m; i++)
{
int u, v, w;
cin >> u >> v >> w;
if (w >= 0)
{
g[u].p_b({w, v});
g[v].p_b({w, u});
}
else g[u].p_b({w, v});
}
queue<int> q;
memset(dist, 0x3f3f3f3f, sizeof(dist));
memset(mark, 0, sizeof(mark));
memset(d, 0, sizeof(d));
q.push(1);
mark[1] = 1;
dist[1] = 0;
while (!q.empty())
{
int hd = q.front();
q.pop();
for (auto i : g[hd])
{
int to = i.nd, edge = i.ft;
if (dist[to] > dist[hd] + edge)
{
dist[to] = dist[hd] + edge;
d[to] = d[hd] + 1;
if (d[to] >= n)
{
cout << "YES" << "\n";
return ;
}
if (!mark[to])
{
mark[to] = 1;
q.push(to);
}
}
}
}
cout << "NO" << "\n";
}
int main()
{
// freopen("lwx.in", "r", stdin);
// freopen("lwx.out", "w", stdout);
int t;
cin >> t;
while (t--)
{
solve();
}
return 0;
}
我一直没有找到错误