73分求调
查看原帖
73分求调
932505
_LTC_Augenstern_楼主2024/4/21 10:43
#include <bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
using namespace std;
typedef long long ll;
struct node
{
	int v;
	int len;
};
bool vis[100010];
vector<node> mp[100010];
int n, m, x, y, z, tot[100010], dis[100010];
bool SPFA(int strt)
{
	queue<int> q;
	for(int i = 0; i <= n; i ++) dis[i] = -1e9;
	dis[strt] = 0, vis[strt] = true;
	tot[strt] = 1;
	q.push(strt);
	while(q.size())
	{
		int u = q.front();
		vis[u] = false;
		q.pop();
		for(int i = 0; i < mp[u].size(); i ++)
		{
			int v = mp[u][i].v, val = mp[u][i].len;
			if(dis[v] < dis[u] + val)
			{
				dis[v] = dis[u] + val;
				if(!vis[v])
				{
					vis[v] = true;
					q.push(v);
					tot[v] ++;
					if(tot[v] > n + 1) return false;
				}
			}
		}
	}
	return true;
}
int main()
{
	IOS;
	cin >> n >> m;
	for(int i = 1; i <= n; i ++) mp[0].push_back({i, 0});
	for(int i = 0; i < m; i ++) cin >> x >> y >> z, mp[x].push_back({y, -z});
	if(!SPFA(0)) cout << "No";
	else for(int i = 1; i <= n; i ++) cout << dis[i] << " ";
	return 0;
}
2024/4/21 10:43
加载中...