Submission #1135516

#TimeUsernameProblemLanguageResultExecution timeMemory
1135516UnforgettableplCat Exercise (JOI23_ho_t4)C++20
31 / 100
2095 ms16044 KiB
// #pragma GCC optimize("Ofast","unroll-loops")
#include <bits/stdc++.h>
using namespace std;

#define int long long


int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin >> n;
    vector<int> P(n+1);
    for(int i=1;i<=n;i++)cin>>P[i];
    vector<vector<int>> adj(n+1);
    for(int i=1;i<n;i++) {
        int a,b;cin>>a>>b;a=P[a];b=P[b];
        adj[a].emplace_back(b);
        adj[b].emplace_back(a);
    }
    vector<int> DP(n+1);
    for(int i=1;i<=n;i++) {
        function<void(int,int,int)> dfs = [&](int x,int p,int dist) {
            DP[i]=max(DP[i],dist+DP[x]);
            for(int&j:adj[x])if(j!=p and j<i)dfs(j,x,dist+1);
        };
        dfs(i,-1,0);
    }
    cout << DP[n] << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...