#include <bits/stdc++.h>
#define rep(i,l,r) for(int i=l;i<=r;++i)
using namespace std;
struct Edge{
int from,to,w;
};
int n,m;
vector<Edge> linker[3023];
int dis[3023];
bool Bellman_ford(int s){
rep(i,1,n)
dis[i]=0x3f3f3f3f;
dis[s]=0;
bool fg;
rep(i,1,n){
fg=0;
if(dis[i]==0x3f3f3f3f)
continue;
for(auto& j:linker[i])
{
if(dis[j.to]>dis[j.from]+dis[j.w])
dis[j.to]=dis[j.from]+dis[j.w];
}
if(!fg)
return 0;
}
return 1;
}
signed main(){
int t;
cin>>t;
while(t--){
cin>>n>>m;
rep(i,1,m){
int u,v,w;
cin>>u>>v>>w;
linker[u].push_back((Edge){u,v,w});
if(w>=0)
linker[v].push_back((Edge){v,u,w});
}
cout<<(Bellman_ford(1)?"YES":"NO")<<endl;
rep(i,1,n)
for(auto& it:linker[i]);
}
}