제출 #508688

#제출 시각아이디문제언어결과실행 시간메모리
508688JooTorrent (COI16_torrent)C++17
0 / 100
102 ms20460 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]]); for(int i = 1; i <= n; i++) dp[i] = 0; swap(st[0], st[1]); dfs(st[0], -1); ans = max({ans, dp[st[0]], dp[st[1]]}); cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...