#include<bits/stdc++.h>
using namespace std;
const int N=1e4+1,inf=INT_MAX;
struct V{
vector<pair<int ,int> >e;
int d=inf,b,cnt;
}v[N];
int t,n,m;
bool check(){
queue<int>q;
for(q.push(1),v[1].d=0;!q.empty();q.pop()){
int x=q.front();
v[x].b=0;
for(auto i:v[x].e){
if(v[x].d+i.second<v[i.first].d){
v[i.first].d=v[x].d+i.second;
if(!v[i.first].b){
v[i.first].b=1;
q.push(i.first);
if(++v[i.first].cnt>=n){
return 1;
}
}
}
}
}
return 0;
}
int main(){
cin>>t;
while(t--){
cin>>n>>m;
for(int i=1,x,y,z;i<=m;i++){
cin>>x>>y>>z;
fill(v+1,v+1+n,v[0]);
v[x].e.emplace_back(y,z);
if(z>=0){
v[y].e.emplace_back(x,z);
}
}
if(check()){
cout<<"YES\n";
}else{
cout<<"NO\n";
}
}
return 0;
}