Submission #508685

#TimeUsernameProblemLanguageResultExecution timeMemory
508685JooTorrent (COI16_torrent)C++17
0 / 100
94 ms23160 KiB
#include <bits/stdc++.h> using namespace std; const int N = 3e5+10; int st[2], dp[N], tmp[N], n; vector<int> G[N]; void dfs(int u, int p){ for(int v : G[u]){ if(v == p) continue; dfs(v, u); } int sz = 0; for(int v : G[u]) if(v != p and v != st[1]) tmp[++sz] = dp[v]; sort(tmp+1, tmp+sz+1, greater<int>()); for(int k = 1; k <= sz; k++){ dp[u] = max(dp[u], tmp[k]+k); } } int main(void){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> st[0] >> st[1]; for(int i = 1; i < n; i++){ int u, v; cin >> u >> v; G[u].emplace_back(v); G[v].emplace_back(u); } dfs(st[0], -1); int ans = max(dp[st[0]], dp[st[1]]); cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...