RE求助
查看原帖
RE求助
677489
Aaron530楼主2024/10/5 15:13
#include <bits/stdc++.h>
using namespace std;
int n,m,T;
vector <int> e[20005];
int d[20005],book[20005],cnt[20005];
queue <int> q;
int spfa()
{
	memset(d,0x3f,sizeof d);
	memset(book,0,sizeof book);
	memset(cnt,0,sizeof cnt);
	while(!q.empty())
		q.pop();
	d[1]=0;
	q.push(1);
	book[1]=1;
	while(!q.empty())
	{
		int u=q.front();
		for(int i=0;i<e[u].size();i+=2)
		{
			int v=e[u][i],w=e[u][i+1];
			if(d[v]>d[u]+w)
			{
				d[v]=d[u]+w;
				if(book[v]==0)
				{
					if(++cnt[v]>=n)
					{
						cout<<"YES"<<endl;
						return 0;
					}
					q.push(v);
					book[v]=1;
				}
			}
		}
		q.pop();
		book[u]=0;
	}
	cout<<"NO"<<endl;
}
int main()
{
	cin>>T;
	while(T--)
	{
		for(int i=1;i<=n;i++)
			e[i].clear();
		cin>>n>>m;
		for(int i=1;i<=m;i++)
		{
			int u,v,w;
			cin>>u>>v>>w;
			if(w>=0)
			{
				e[u].push_back(v);
				e[u].push_back(w);
				e[v].push_back(u);
				e[v].push_back(w);
			}
			else
			{
				e[u].push_back(v);
				e[u].push_back(w);
			}
		}
		spfa();
	}
	return 0;
}

为什么这段程序会RE啊

2024/10/5 15:13
加载中...