输出和下载的样例一模一样,为啥过不了?
查看原帖
输出和下载的样例一模一样,为啥过不了?
1173402
yfhshtk楼主2024/8/2 18:26

本人马蜂良好

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MAXN = 2e3 + 5;
ll t, n, m, u, v, w, dis[MAXN], ind[MAXN];
struct node {
	ll v, w;
};
vector<node> adj[MAXN];
bool vis[MAXN];
bool SPFA() {
	queue<ll> q;
	for(ll i = 1; i <= n; ++i) {
		dis[i] = 1e18;
		vis[i] = 0;
		ind[i] = 0;
	}
	dis[1] = 0, vis[1] = 1, ind[1] = 1;
	q.push(1);
	while(!q.empty()) {
		u = q.front();
		q.pop();
		vis[u] = 0;
		for(auto i : adj[u]) {
			v = i.v, w = i.w;
			if(dis[v] > dis[u] + w) {
				dis[v] = dis[u] + w;
				if(!vis[v]) {
					q.push(v);
					vis[v] = 1;
					++ind[v];
					if(ind[v] > n){
						return 0;
					}
				}
			}
		}
	}
	return 1;
}
int main() {
	//freopen("P3385_1.in","r",stdin);
	//freopen("test.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> t;
	while(t--) {
		cin >> n >> m;
		for(ll i = 1; i <= m; ++i) {
			cin >> u >> v >> w;
			adj[u].emplace_back(node{v,w});
			if(w >= 0) {
				adj[v].emplace_back(node{u,w});
			}
		}
		if(!SPFA()) {
			puts("YES");
		}
		else {
			puts("NO");
		}
		for(ll i = 1; i <= n; ++i) {
			adj[i].clear();
		}
	}
	return 0;
}
2024/8/2 18:26
加载中...