社区讨论

求调

P3385【模板】负环参与者 2已保存回复 6

讨论操作

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

当前回复
6 条
当前快照
1 份
快照标识符
@mhjv0864
此快照首次捕获于
2025/11/04 08:57
4 个月前
此快照最后确认于
2025/11/04 08:57
4 个月前
查看原帖
https://www.luogu.com.cn/record/210863815
CPP
#include <bits/stdc++.h>
using namespace std;
//#define int long long
int n,m;
int cnt;
struct NODE
{
	int v,w;
	int ne;
} a[100005];
int head[100005];
int c[2005];
bool f[2005];
int b[2005];
queue<int> q;
void add(int u,int v,int w)
{
	cnt++;
	a[cnt].v = v;
	a[cnt].w = w;
	a[cnt].ne = head[u];;
	head[u] = cnt;
}
void spfa()
{
	memset(b,0x3f,sizeof b);
	memset(f,0,sizeof f);
	while(!q.empty()) q.pop();
	q.push(1);
	f[1] = 1;
	b[1] = 0;
	while(!q.empty())
	{
		int u = q.front();
		q.pop();
		for(int i=a[u].ne;i;i=a[i].ne)
		{
			int v = a[i].v;
			int w = a[i].w;
			if(b[u]+w<b[v])
			{
				b[v] = b[u]+w;
				c[v]++;
				if(c[v]>=n)
				{
					cout<<"YES\n";
					return;
				}
				if(!f[v])
				{
					f[v] = 1;
					q.push(v);
				}
			}
		}
	}
	cout<<"NO\n";
}
signed main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int q;
	cin>>q;
	while(q--)
	{
		cin>>n>>m;
		for(int i=1;i<=m;i++)
		{
			int u,v,w;
			cin>>u>>v>>w;
			add(u,v,w);
			if(w>=0) add(v,u,w);
		}
		spfa();
	}
	return 0;
}

回复

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

正在加载回复...