神秘错误
查看原帖
神秘错误
489257
Mirage_Insane楼主2023/8/14 16:26

90pts, WA on #11

下载了第11个数据点,应该输出一个 YES????

大佬帮忙找找错,感激不尽。

#include<bits/stdc++.h>
using namespace std;
#define SF scanf
#define PF printf
struct Edge {
	int to, next, w;
}edge[50005];
struct node {
	int dis, id;
};
int n, m, cnt, head[5005], num[5005], dis[5005];
bool vis[5005];
void add(int u, int v, int w) {
	edge[++cnt].to = v;
	edge[cnt].next = head[u];
	edge[cnt].w = w;
	head[u] = cnt;
}
void SPFA(int x) {
	for(int i = 1; i <= n; i++) dis[i] = 0x3f3f3f3f;
	dis[x] = 0;
	queue<node> q;
	q.push((node){0, x}), vis[x] = 1;
	while(!q.empty()) {
		node tmp = q.front();
		q.pop();
		vis[tmp.id] = 0;
		num[tmp.id]++;
		if(num[tmp.id] == n) {
			PF("NO");
			exit(0);
		}
		for(int i = head[tmp.id]; i; i = edge[i].next) {
			int to = edge[i].to;
			if(dis[to] > dis[tmp.id] + edge[i].w) {
				dis[to] = dis[tmp.id] + edge[i].w;
				if(!vis[to]) {
					q.push((node){dis[to], to});
					vis[to] = 1;
				}
			}
		}
	}
}
int main() {
	SF("%d%d", &n, &m);
	for(int i = 1; i <= n; i++) add(0, i, 0);
	for(int i = 1; i <= m; i++) {
		int u, v, w;
		SF("%d%d%d", &u, &v, &w);
		add(v, u, w);
	}
	SPFA(0);
	for(int i = 1; i <= n; i++) PF("%d ", dis[i]);
	return 0;
}
2023/8/14 16:26
加载中...