#include<bits/stdc++.h>
#define int long long
#define read(a) scanf("%lld",&a)
using namespace std;
const int N=1e5+5,inf=1e5;
int n,t,m,l,r,z;
int dis[N],cnt[N],vis[N];
struct sb{
int v,w;
};
queue<int>q;
signed main(){
// freopen("a.in","r",stdin);
// freopen("a.out","w",stdout);
read(t);
while(t--){
vector<sb>a[N];
read(n);read(m);
for(int i=1;i<=m;i++){
read(l);read(r);read(z);
a[l].push_back((sb){r,z});
if(z>=0){
a[r].push_back((sb){l,z});
}
}
while(!q.empty()) q.pop();
for(int i=1;i<=n;i++){
dis[i]=inf;
cnt[i]=0;
vis[i]=0;
}
dis[1]=0;
vis[1]=1;
q.push(1);
int wssb=1;
while(!q.empty()&&wssb){
int k=q.front();
q.pop();
for(auto i:a[k]){
if(dis[i.v]>dis[k]+i.w){
dis[i.v]=dis[k]+i.w;
cnt[i.v]=cnt[k]+1;
if(cnt[i.v]>=n){
printf("YES\n");
wssb=0;
break;
}
if(!vis[i.v]){
q.push(i.v);
vis[i.v]=1;
}
}
}
vis[k]=0;
}
if(wssb) printf("NO\n");
}
}