社区讨论

求调

P3385【模板】负环参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mdgtd9qd
此快照首次捕获于
2025/07/24 11:09
8 个月前
此快照最后确认于
2025/11/04 03:50
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
#define int long long
const int INF=0x3f3f3f3f3f3f;
int T;
int n,m;
struct node
{
	int u,w;
};
vector<node>g[2020];
int vis[2020],tag[2020],cnt[2020];
void add(int u,int v,int w)
{
	g[u].push_back(node{v,w});
	if(w>=0)
	{
		g[v].push_back(node{u,w});
	}
}
queue<int>q;
bool SPFA()
{
	q.push(1);
	vis[1]=1;
	tag[1]=0;
	while(q.size())
	{
		q.pop();
	}
	while(q.size())
	{
		int j;
		int now=q.front();
		vis[now]=0;
		for(j=0;j<g[now].size();j++)
		{
			int nt=g[now][j].u;
			int nw=g[now][j].w;
			if(tag[nt]>tag[now]+nw)
			{
				tag[nt]=tag[now]+nw;
				if(vis[nt]==1)
				{
					continue;
				}
				if(++cnt[nt]>=n)
				{
					return 1;
				}
				q.push(nt);
				vis[nt]=1;
			}
		}
		q.pop();
	}
	return 0;
}
signed main()
{
	int i;
	cin>>T;
	while(T--)
	{
		memset(g,0,sizeof(g));
		memset(cnt,0,sizeof(cnt));
		memset(tag,INF,sizeof(tag));
		memset(vis,0,sizeof(vis));
		cin>>n>>m;
		for(i=1;i<=m;i++)
		{
			int u,v,w;
			cin>>u>>v>>w;
			add(u,v,w);
		}
		if(SPFA()==1)
		{
			cout<<"YES\n";
		}
		else
		{
			cout<<"NO\n";
		}
	}
	return 0;
}
求调

回复

0 条回复,欢迎继续交流。

正在加载回复...