#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int n,m,d[100010],f[100010],vis[100010],l;
vector<pair<int ,int> > g[100010];
queue<int> q;
int main(){
cin>>l;
while(l--){
cin>>n>>m;
int u,v,w;memset(d,0x3f,sizeof(d));
for(int i=1;i<=m;i++){
cin>>u>>v>>w;
if(w>=0){
g[u].push_back(make_pair(v,w));
g[v].push_back(make_pair(u,w));
}
else
g[u].push_back(make_pair(u,w));
}
d[1]=0;
f[1]=1;
q.push(1);
while(!q.empty()){
int k=q.front();
for(auto j:g[k]){
if(d[j.first]>d[k]+j.second){
d[j.first]=d[k]+j.second;
if(f[j.first]==0){
f[j.first]=1;
q.push(j.first);
vis[j.first]++;
if(vis[j.first]>=n){cout << "YES"<<endl;break;}
}
}
}
f[k]=0;
q.pop();
}
cout << "NO"<<endl;}
return 0;
}