Submission
Status:
[PPPPPPPPPP][PPPPP][PPPPPPPP][PPPPPPPPPP]
Subtask/Task Score:
{10/10}{5/5}{15/15}{70/70}
Score: 100
User: Nay-O
Problemset: D.Drunk
Language: cpp
Time: 0.119 second
Submitted On: 2026-03-21 11:18:54
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e6+5;
int d[N],x[N];
int n;
ll dp[N];
ll solve(int a){
if(x[a]==a){
return d[a];
}
if(dp[a]!=0){
return dp[a];
}
return dp[a] = solve(x[a])+d[a];
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL);
cin>>n;
for(int i = 1; i <=n ; i++){
cin>>d[i];
}
for(int i = 1; i <= n; i++){
cin>>x[i];
}
ll ans=0;
for(int i = 1; i <= n; i++){
ans = max(solve(i),ans);
}
cout << ans;
return 0;
}