#include<bits/stdc++.h>
using namespace std;
const int N=6500,INF=0x3f3f3f3f;
int a[N][N],b[N],c[N],q[N],h,t,p,n,m,u,v,w;
bool vis[N];
int main(){
cin>>p;
while(p--){
cin>>n>>m;
for(int i=1;i<=n;i++){
b[i]=INF;
c[i]=0;
vis[i]=0;
q[i]=0;
for(int j=1;j<=n;j++){
if(i!=j) a[i][j]=INF;
else a[i][j]=0;
}
}
for(int i=1;i<=m;i++){
cin>>u>>v>>w;
a[u][v]=w;
if(w>=0) a[v][u]=w;
}
h=t=b[1]=0;
q[t++]=vis[1]=1;
bool f=0;
while(h<t&&!f){
int d=q[h++];
vis[d]=0;
for(int i=1;i<=n;i++){
if(a[d][i]!=INF&&b[d]!=INF&&a[d][i]+b[d]<b[i]){
b[i]=b[d]+a[d][i];
c[i]=c[d]+1;
if(c[i]>=n){f=1;break;}
if(!vis[i]){
vis[i]=1;
q[t++]=i;
}
}
}
}
if(f) cout<<"YES";
else cout<<"NO";
cout<<"\n";
}
return 0;
}
数组已经开的很大了