Submission #417794

#TimeUsernameProblemLanguageResultExecution timeMemory
417794egekabasMousetrap (CEOI17_mousetrap)C++14
25 / 100
1073 ms73436 KiB
#include <bits/stdc++.h> #define all(x) (x).begin(), (x).end() #define ff first #define ss second #define pb push_back #define mp make_pair using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<ll, ll> pll; typedef pair<ull, ull> pull; typedef pair<int, int> pii; typedef pair<ld, ld> pld; int n, t, m; vector<int> g[1000009]; int trap[1000009]; int dp[1000009]; void dfs(int v, int prt){ if(v == t){ trap[v] = 1; return; } for(auto u : g[v]) if(u != prt){ dfs(u, v); if(trap[u]) trap[v] = 1; } pii mini = {0, 0}; int edgecnt = 0; for(auto u : g[v]) if(u != prt && trap[u] == 0){ if(dp[u] >= mini.ff){ mini.ss = mini.ff; mini.ff = dp[u]; } else if(dp[u] >= mini.ss) mini.ss = dp[u]; ++edgecnt; } dp[v] = edgecnt-1; dp[v] += mini.ss+1; for(auto u : g[v]) if(u != prt && trap[u]) dp[v] += dp[u]; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); cin >> n >> t >> m; for(int i = 0; i < n-1; ++i){ int x, y; cin >> x >> y; g[x].pb(y); g[y].pb(x); } dfs(m, 0); cout << dp[m] << '\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...