제출 #945258

#제출 시각아이디문제언어결과실행 시간메모리
945258vladiliusCat Exercise (JOI23_ho_t4)C++17
0 / 100
2 ms4956 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int msz = 2e5 + 5; using pii = pair<int, int>; vector<int> g[msz]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n; vector<int> a(n + 1); int s = 0; for (int i = 1; i <= n; i++){ cin>>a[i]; if (a[i] == n){ s = i; } } for (int i = 1; i < n; i++){ int a, b; cin>>a>>b; g[a].push_back(b); g[b].push_back(a); } vector<bool> used(n + 1); function<pii(int, int, int)> dfs = [&](int v, int d, int pr){ int maxi = v, dist = d; for (int i: g[v]){ if (used[i] || i == pr) continue; auto [mx, dd] = dfs(i, d + 1, v); if (mx > maxi){ maxi = mx; dist = dd; } } pii ret = {maxi, dist}; return ret; }; function<ll(int)> f = [&](int v){ used[v] = true; ll out = 0; for (int i: g[v]){ if (used[i]) continue; auto [u, d] = dfs(i, 1, 0); out = max(out, d + f(u)); } return out; }; cout<<f(s)<<"\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...