wa了一个,不知道怎么回事,救救了
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const int inf=0x3f3f3f3f;
long long h[N<<1],d[N<<1],idx;
bool vis[N];
struct edge
{
int to,next,w;
}e[N<<1];
void add(int a,int b,int w)
{
e[idx].to=b;
e[idx].w=w;
e[idx].next=h[a];
h[a]=idx++;
}
long long cnt[N<<1];
int n,m;
bool spfa()
{
queue<int>q;
d[1]=0;
for(int i=1;i<=n;i++){
q.push(i);
vis[i]=1;
}
while(q.size()){
int c=q.front();
q.pop();
vis[c]=0;
for(int i=h[c];~i;i=e[i].next){
auto j=e[i];
if(d[j.to]>d[c]+j.w){
d[j.to]=d[c]+j.w;
cnt[j.to]=cnt[c]+1;
if(cnt[j.to]>=n)return 1;
if(!vis[j.to]){
q.push(j.to);
vis[j.to]=1;
}
}
}
}
return 0;
}
void solve()
{
int t;
cin>>t;
while(t--){
cin>>n>>m;
memset(h,-1,sizeof(h));
memset(d,inf,sizeof d);
memset(vis,0,sizeof vis);
memset(cnt,0,sizeof cnt);
while(m--){
int a,b,w;
cin>>a>>b>>w;
if(w>=0){
add(a,b,w);
add(b,a,w);
}
else add(a,b,w);
}
if(spfa())cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
solve();
return 0;
}