为什么这样写会MLE
查看原帖
为什么这样写会MLE
1062532
MinLand楼主2024/6/10 13:51

这样写的话1,2,3,4,6,8,9,10 爆了MLE

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;

int n, m;
vector<int> g[114514];
int f[114514];
void dfs(int x, int top) {
	if (f[x] > top)
		return;
	else {
		f[x] = top;
		for (int u : g[x]) {
			dfs(u, top);
		}
	}
}

int main() {
	cin >> n >> m;
	for (int i = 1; i <= m; i++) {
		int u, v;
		cin >> u >> v;
		g[v].push_back(u);
	}
	for (int i = n; i >= 1; i--) {
		dfs(i, i);
	}
	for (int i = 1; i <= n; i++) {
		printf("%d ", f[i]);
	}
	return 0;
}

但是如果将 dfs 里面的 if (f[x] > top) 改成 if (f[x]) 就AC了。

有大佬解释一下吗awa。

2024/6/10 13:51
加载中...