#include
#include
#include
#include
using namespace std; const int inf=0x3f3f3f3f; const int N=1024; struct node { int to; int w; node *next; }; node* edge[N]; int n,m,w,cnt[N],vis[N],dist[N]; queue
q; int spfa(int v0) { while(!q.empty()) q.pop(); int i,u; node *ptr; for(i=1; i
n) return 1; ptr=edge[u]; while(ptr!=NULL) { if(dist[ptr->to]>dist[u]+ptr->w) { dist[ptr->to]=dist[u]+ptr->w; if(vis[ptr->to]==0) { vis[ptr->to]=1; cnt[ptr->to]++; q.push(ptr->to); } } ptr=ptr->next; } } return 0; } int main() { int _,i,u,v,t,flag; node* temp; scanf("%d",&_); while(_--) { scanf("%d%d%d",&n,&m,&w); for(i=1; i
to=v; temp->w=t; temp->next=NULL; if(edge[u]==NULL) { edge[u]=temp; } else { temp->next=edge[u]; edge[u]=temp; } temp=new node; temp->to=u; temp->w=t; temp->next=NULL; if(edge[v]==NULL) { edge[v]=temp; } else { temp->next=edge[v]; edge[v]=temp; } } for(i=0; i
to=v; temp->w=-t; temp->next=NULL; if(edge[u]==NULL) { edge[u]=temp; } else { temp->next=edge[u]; edge[u]=temp; } } flag=spfa(1); if(flag) printf("YES\n"); else printf("NO\n"); } return 0; }