蒟蒻求调
查看原帖
蒟蒻求调
1642181
siqudeshutiao楼主2025/1/14 10:00
#include<bits/stdc++.h>
using namespace std;
const int N=6100;
int t,n,m,dis[N],vis[N],head[N],cnt[N],tot=0;
struct node{
	int v,w,nxt;
}a[N*10];
queue<int> q;
void add(int u,int v,int w){
	tot++;
	a[tot].v=v;
	a[tot].w=w;
	a[tot].nxt=head[u];
	head[u]=tot;
}
int spfa(){
	memset(dis,0x3f,sizeof(dis));
	memset(dis,0,sizeof(vis));
	memset(cnt,0,sizeof(cnt));
	dis[1]=0;
	q.push(1);
	vis[1]=1;
	while(!q.empty()){
		int x=q.front();
		q.pop();
		vis[x]=0;
		for(int i=head[x];i;i=a[i].nxt){
			int y=a[i].v,w=a[i].w;
			if(dis[x]+w<dis[y]){
				dis[y]=dis[x]+w;
				if(!vis[y]){
					cnt[y]++;
					if(cnt[y]>n){
						return 1;
					}
					vis[y]=1;
					q.push(y);
				}
			}
		}
	}
	return 0;
}
int main(){
	scanf("%d",&t);
	while(t--){
		cout<<"&";
		scanf("%d%d",&n,&m);
		tot=0;
		for(int i=1;i<=m;i++){
			int u,v,w;
			scanf("%d%d%d",&u,&v,&w);
			add(u,v,w);
			if(w>=0) add(v,u,w);
		}
		int iff=spfa();
		if(iff) printf("YES");
		else printf("NO");
	}
	return 0;
}

蒟蒻求调,样例输出错误%%%%%%%%%%

2025/1/14 10:00
加载中...