按照第一篇题解写的,求大佬帮看看哪错了,,,全WA
查看原帖
按照第一篇题解写的,求大佬帮看看哪错了,,,全WA
675572
syyyyhy楼主2022/4/1 08:03
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

typedef pair<int,int> pii;
int n,m;
vector<pii> g[5020];
int vis[5020];
int entry[5020];
int dis[5020];
queue<int> que;
bool spfa(int num)
{	
	que.push(num);
	entry[num]=1;
	vis[num]=1;
	while(!que.empty())
	{
		int start=que.front();
		vis[num]=0;
		que.pop();
		for(pii to:g[start])
		{
			if((dis[to.first])<(dis[start]+to.second))
			{
				dis[to.first]=dis[start]+to.second;
				if(!vis[to.first])
				{
					vis[to.first]=1;
					entry[to.first]++;
					que.push(to.first);
					if(entry[to.first]>=n+1) return true;					
				}
			}
		}
	}
	return false;	
}

void mem()
{
	for(int i=0;i<5020;i++)
		dis[i]=-1;
	dis[0]=0;
}


int main()
{
	mem();
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int u,v,w;
		cin>>u>>v>>w;
		g[u].push_back({v,-w});
	}
	
	for(int i=1;i<=n;i++)
	{
		g[0].push_back({i,0});
	}
	
	if(spfa(0))
	{
		cout<<"NO";
	}
	else 
	{
		for(int i=1;i<=n;i++)
		{
			cout<<dis[i]<<" "; 
		}
	}
	return 0;
 } 
2022/4/1 08:03
加载中...