#include<bits/stdc++.h>
using namespace std;
const int maxn=200010;
const int maxxn=600010;
struct e{
int u,v,w,nxt;
}edge[maxxn];
int head[maxn],vis[maxn],dis[maxn],tot,n,m,cnt[maxn],flag;
void add(int u,int v,int w){
edge[++tot].u=u;
edge[tot].v=v;
edge[tot].w=w;
edge[tot].nxt=head[u];
head[u]=tot;
}
queue<int> q;
void spfa(int s){
memset(vis,0,sizeof(vis));
memset(dis,0x3f,sizeof(dis));
memset(cnt,sizeof(cnt),0);
q.push(s);
dis[s]=0;
vis[s]=1;
while(!q.empty()){
int x=q.front();
cnt[x]++;
q.pop();
vis[x]=0;
if(cnt[x]>=n){
flag=1;
return ;
}
for(int i=head[x];i;i=edge[i].nxt){
int to=edge[i].v;
if(dis[to]>dis[x]+edge[i].w){
dis[to]=dis[x]+edge[i].w;
if(!vis[to])q.push(to),vis[to]=1;
}
}
}
}
int main(){
int T;
cin>>T;
while(T--){
flag=0;
for(int i=0;i<maxxn;i++) edge[i].nxt=0;
for(int i=0;i<maxn;i++) head[i]=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
int x,y,z;
cin>>x>>y>>z;
if(z<0){
add(x,y,z);
}
else
{
add(x,y,z);
add(y,x,z);
}
}
spfa(1);
if(flag==1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
tot=0;
}
}