对每一个点跑spfa,有负环就可以直接输出yes,没有就不能回到开始时间之前
from collections import deque
debug=0
t=int(input())
class node:
def __init__(self,v,w,ne):
self.v=v
self.w=w
self.ne=ne
def spfa(x):
global vis,cnt,dis,n
q=deque()
q.append(x)
vis[x]=1
dis[x]=0
while len(q)!=0:
u=q.popleft()
vis[u]=0
ind=h[u]
while ind!=0:
ll=line[ind]
if (dis[ll.v]>dis[u]+ll.w):
dis[ll.v]=dis[u]+ll.w
cnt1[ll.v]=cnt1[u]+1
if cnt1[ll.v]>n: return True
if vis[ll.v]==0 :
q.append(ll.v)
vis[ll.v]=1
ind=ll.ne
ind=h1[u]
while ind!=0:
ll=line1[ind]
if (dis[ll.v]>dis[u]+ll.w):
dis[ll.v]=dis[u]+ll.w
cnt1[ll.v]=cnt1[u]+1
if cnt1[ll.v]>n: return True
if vis[ll.v]==0 :
q.append(ll.v)
vis[ll.v]=1
ind=ll.ne
return False
for _ in range(t):
n,m,w=map(int,input().split())
line=[0]
cnt=0
h=[0 for i in range(n+1)]
h1=[0 for i in range(n+1)]
line1=[0]
for i in range(m):
u,v,p=map(int,input().split())
cnt+=1
line.append(node(v,p,h[u]))
h[u]=cnt
cnt+=1
line.append(node(u,p,h[v]))
h[v]=cnt
cnt=0
for i in range(w):
u,v,p=map(int,input().split())
cnt+=1
line1.append(node(v,-p,h1[u]))
h1[u]=cnt
vv=0
for i in range(1,n+1):
vis=[0 for i in range(n+1)]
cnt1=[0 for i in range(n+1)]
dis=[float("inf") for i in range(n+1)]
if spfa(i)==True:
print("YES")
vv=1
break
if vv==0:print("NO")