#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int h[N],e[N],w[N],ne[N],idx;
int vis[N],dist[N],cnt[N],n,m,t,u,v,x;
void add(int a,int b,int c){
e[idx]=b;
w[idx]=c;
ne[idx]=h[a];
h[a]=idx++;
}
void init(){
memset(h,-1,sizeof h);
idx=0;
}
bool spfa(){
queue<int> q;
memset(dist,0x3f,sizeof dist);
memset(cnt,0,sizeof cnt);
memset(vis,0,sizeof vis);
for(int i=1;i<=n;i++){
q.push(i);
vis[i]=1;
}
while(!q.empty()){
int k=q.front();
q.pop();
vis[k]=0;
for(int i=h[k];i!=-1;i=ne[i]){
int j=e[i];
if(dist[j]>dist[k]+w[i]){
dist[j]=dist[k]+w[i];
cnt[j]=cnt[k]+1;
if(cnt[j]>=n)return true;
if(!vis[j]){
q.push(j);
vis[j]=1;
}
}
}
}
return false;
}
int main(){
init();
cin>>t;
for(int i=0;i<t;i++){
cin>>n>>m;
for(int j=0;j<m;j++){
cin>>u>>v>>x;
if(x>=0){
add(u,v,x);
add(v,u,x);
}else{
add(u,v,x);
}
}
if(spfa())cout<<"YES"<<endl;
else cout<<"NO"<<endl;
init();
}
}