#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int t,n,m;
int x,y,z;
int h[N],idx=0;
bool vis[N];
int cnt[N];
struct pw{
int x,nxt,w;
} num[N];
void add(int y,int x,int w){
idx++;
num[idx].x=x;
num[idx].w=w;
num[idx].nxt=h[y];
h[y]=idx;
}
int q[N],hh=0,tt=0;
int dist[N];
bool SPFA(){
vis[1]=1;
q[tt++]=1;
dist[1]=0;
while(tt!=hh){
int x=q[hh++];
if(hh==N) hh=0;
for(int i=h[x];~i;i=num[i].nxt){
int uo=num[i].x;
if(dist[uo]>num[i].w+dist[x]){
dist[uo]=num[i].w+dist[x];
cnt[uo]=cnt[x]+1;
if(cnt[uo]>=n) return 1;
if(!vis[uo]){
vis[uo]=1;
q[tt++]=uo;
if(tt==N) tt=0;
}
}
}
}
return 0;
}
int main()
{
cin>>t;
while(t--){
memset(vis,0,sizeof(vis));
memset(h,-1,sizeof(h));
memset(dist,0x3f,sizeof(dist));
memset(cnt,0,sizeof(cnt));
idx=hh=tt=0;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x>>y>>z;
if(z>0)add(x,y,z);
add(y,x,z);
}
for(int i=1;i<=n;i++){
add(0,i,0);
}
if(SPFA()) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}