Submission
Status:
[PPPPPPPPPP][PPPPP][PPPPPPPP][PPPPPPPPPP]
Subtask/Task Score:
{10/10}{5/5}{15/15}{70/70}
Score: 100
User: purihorharin
Problemset: D.Drunk
Language: cpp
Time: 0.108 second
Submitted On: 2026-03-20 12:43:18
#include <iostream>
#include <vector>
using namespace std;
int helper (vector<int>& d, vector<int>& x, vector<int>& m, int i) {
if (x[i] == i) return d[i];
if (m[i] == 0) m[i] = d[i] + helper(d, x, m, x[i]);
return m[i];
}
int main () {
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
int n;
cin >> n;
vector<int> d(n);
vector<int> x(n);
for (int& rf : d) {
cin >> rf;
}
for (int& rf : x) {
cin >> rf;
rf--;
}
vector<int> m(n);
int mymax = 0;
for (int i = 0; i < n; i++) {
int result = helper(d, x, m, i);
if (mymax < result) mymax = result;
}
cout << mymax;
}