蒟 蒻 8 分 求 助 , 救 命
查看原帖
蒟 蒻 8 分 求 助 , 救 命
568193
zhaozhicheng2010楼主2022/8/8 20:58
#include<bits/stdc++.h>
using namespace std;
const int N=2005,inf=0x3f3f3f3f;
int g,n,m,dis[N];
struct stu{
	int u,v,w;
} a[N];
void relax(int u,int v,int w)
{
	if(dis[u]+w<dis[v]){
		dis[v]=dis[u]+w;
	}
}
int bf(int h)
{
	for(int i=1;i<n;i++){
		for(int j=1;j<=h;j++){
			if(a[j].u<inf) relax(a[j].u,a[j].v,a[j].w);
		}
	}
	for(int i=1;i<=h;i++){
		if(dis[a[i].u]+a[i].w<dis[a[i].v]){
			return 1;
		}
	}
	return 0;
}
int main(){
	scanf("%d",&g);
	while(g--){
	int h=1;
	memset(dis,inf,sizeof(dis));
	memset(a,0,sizeof(a));
	scanf("%d%d",&n,&m);
	for(int i=1,u,v,w;i<=m;h++,i++){
		scanf("%d%d%d",&u,&v,&w);
		a[h].u=u;
		a[h].v=v;
		a[h].w=w;
		if(u==1){
			h++;
			a[h].u=v;
			a[h].v=u;
			a[h].w=w;
		}
	}
	h--;
	if(bf(h)) printf("YES\n");
	else printf("NO\n");
	}
	return 0;
}
2022/8/8 20:58
加载中...