Submission #782766

#TimeUsernameProblemLanguageResultExecution timeMemory
782766thimote75Cat Exercise (JOI23_ho_t4)C++14
31 / 100
2068 ms18764 KiB
#include <bits/stdc++.h> using namespace std; using idata = vector<int>; using igrid = vector<idata>; idata height; idata pos; idata dp; igrid roads; int solve (int node, int parent, int depth) { if (dp[node] == -1) return 0; int mx = depth + dp[node]; for (int next : roads[node]) if (next != parent) mx = max(mx, solve(next, node, depth + 1)); return mx; } int main () { int N; cin >> N; height.resize(N); pos.resize(N); for (int i = 0; i < N; i ++) { cin >> height[i]; height[i] --; pos[height[i]] = i; } roads.resize(N); for (int i = 1; i < N; i ++) { int a, b; cin >> a >> b; a --; b --; roads[a].push_back(b); roads[b].push_back(a); } dp.resize(N, -1); for (int i = 0; i < N; i ++) { dp[pos[i]] = 0; dp[pos[i]] = solve(pos[i], -1, 0); } cout << dp[pos[N - 1]] << endl; }
#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...