MLE求助
查看原帖
MLE求助
1411407
yyc0717yyc楼主2025/8/5 14:09
#include <bits/stdc++.h>
using namespace std;

struct edge {
	int to, w;
};
int n, s, ans;
edge e[100005];
int f[100005];

int dfs(int x, int w) {
	if (f[x]) return f[x];
	if (x == s && w != 0) return f[x] = w;
	if (e[x].to == 0) return f[x] = 0;
	return f[x] = dfs(e[x].to, w + e[x].w);
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		int d, t;
		cin >> d >> t;
		e[i] = {d, t};
	}
	for (int i = 1; i <= n; i++) {
		s = i;
		ans = max(ans, dfs(i, 0));
	}
	cout << ans;
	return 0;
}
2025/8/5 14:09
加载中...