样例没过,但AC了?
查看原帖
样例没过,但AC了?
568454
zhoujingyuan楼主2025/7/29 09:10

建议测试数据加一组样例进去。。。

#include <bits/stdc++.h>
//#pragma GCC optimize(2)
//#define int long long
#define endl "\n"

using namespace std;

const int N = 5e3 + 9;
const int MAX = 1e9;

vector < pair <int, int> > g[N];

bool vis[N];
int dis[N];
int f[N];

int n, m;

bool SPFA(int s) {
	queue <int> q;
	for(int i = 0; i <= n; i++) {
		dis[i] = -MAX;
	}
	vis[s] = true;
	dis[s] = 0;
	f[s] = 1;
	q.push(s);
	while(!q.empty()) {
		int u = q.front();
		vis[u] = false;
		q.pop();
		for(auto e : g[u]) {
			int v = e.first;
			int w = e.second;
			if(dis[v] < dis[u] + w) {
				dis[v] = dis[u] + w;
				if(!vis[v]) {
					vis[v] = true;
					q.push(v);
					f[v]++;
					if(f[v] > n + 1) {
						return false;
					}
				}
			}
		}
	}
	return true;
}

signed main() {
	ios::sync_with_stdio(0);
	cout.tie(0);
	cin.tie(0);
	cin >> n >> m;
	for(int i = 1; i <= n; i++) {
		g[0].push_back({i, 0});
	}
	for(int i = 1; i <= m; i++) {
		int u, v, w;
		cin >> u >> v >> w;
		g[u].push_back({v, -w});
	}
	if(!SPFA(0)) {
		cout << "NO" << endl;
	}else {
		for(int i = 1; i <= n; i++) {
			cout << dis[i] << " ";
		}
	}
	return 0;
}
2025/7/29 09:10
加载中...