#include<cstdio>
#include<string.h>
const int INF = 1<<29;
const int maxn = 5200;
const int maxv = 1001;
typedef struct Edge{
int u,v,w;
}Edge;
int dis[maxv],all;
Edge edge[maxn];
int n,m,w_h;
bool Bellman_Ford(){
memset(dis,INF,sizeof(dis));
int flag ;
for(int i = 1;i<=n-1;i++){
flag = 0;
for(int j = 0;j<all;j++){
if(dis[edge[j].v] > dis[edge[j].u]+edge[j].w){
flag = 1;
dis[edge[j].v] = dis[edge[j].u]+edge[j].w;
}
}
if(!flag)
break;
}
for(int j = 0;j<all;j++){
if(dis[edge[j].v] > dis[edge[j].u]+edge[j].w)
return true;
}
return false;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
all = 0;
scanf("%d %d %d",&n,&m,&w_h);
int u,v,w;
for(int i = 1;i<=m;i++){
scanf("%d %d %d",&u,&v,&w);
edge[all].u = edge[all+1].v = u;
edge[all].v = edge[all+1].u = v;
edge[all++].w = w;
edge[all++].w = w;
}
for(int j=1;j<=w_h;j++){
scanf("%d %d %d",&u,&v,&w);
edge[all].u = u;
edge[all].v = v;
edge[all++].w = -w;
}
if(Bellman_Ford())
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
poj_3259
最新推荐文章于 2021-08-12 20:58:42 发布