Submission #1320980

#TimeUsernameProblemLanguageResultExecution timeMemory
1320980comet0Cat Exercise (JOI23_ho_t4)C++20
0 / 100
1 ms332 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; int n; vector<int> a; vector<vector<int>> adj; set<int> cand; int dfs(int x, int p = -1) { int e = 0; for (int nxt : adj[x]) if (nxt != p) e = max(e, dfs(nxt, x)); if (a[x] > e) cand.insert(x); return max(e, a[x]); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n; int root; a.resize(n); for (auto& x : a) cin >> x; adj.resize(n); for (int i = 1; i < n; i++) { int u, v; cin >> u >> v; u--; v--; adj[u].push_back(v); adj[v].push_back(u); } root = find(a.begin(), a.end(), n) - a.begin(); dfs(root); int ans = 0; queue<int> q; q.emplace(root); vector<int> vis(n, -1); vis[root] = 0; while (!q.empty()) { int cur = q.front(); q.pop(); if (cand.count(cur)) ans = max(ans, vis[cur]); for (int nxt : adj[cur]) { if (vis[nxt] != -1) continue; vis[nxt] = vis[cur] + 1; q.emplace(nxt); } } cout << ans; }
#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...