Submission #1149007

#TimeUsernameProblemLanguageResultExecution timeMemory
1149007KhoaDuyMousetrap (CEOI17_mousetrap)C++20
0 / 100
557 ms70748 KiB
#include<bits/stdc++.h> using namespace std; #define endl '\n' #define int long long const int MAXN=1e6; int DP[MAXN+1]; vector<vector<int>> graph(MAXN+1); vector<int> path; bool in[MAXN+1]={false}; bool getpath(int u,int p,int t){ path.push_back(u); if(u==t){ return true; } for(int v:graph[u]){ if(v!=p){ if(getpath(v,u,t)){ return true; } } } path.pop_back(); return false; } void DFS(int u,int p){ DP[u]=0; vector<int> child; for(int v:graph[u]){ if(v!=p&&!in[v]){ DFS(v,u); child.push_back(DP[v]+1); } } sort(child.begin(),child.end(),greater<int>()); for(int i=0;i<child.size();i+=2){ child[i]=1; } for(int i=0;i<child.size();i++){ DP[u]+=child[i]; } } signed main(){ //freopen("mousetrap.inp","r",stdin); //freopen("mousetrap.out","w",stdout); ios_base::sync_with_stdio(false); cin.tie(NULL); int n,t,root; cin >> n >> t >> root; for(int i=0;i<n-1;i++){ int u,v; cin >> u >> v; graph[u].push_back(v); graph[v].push_back(u); } getpath(root,-1,t); int ans=0; for(int i=0;i<path.size();i++){ in[path[i]]=true; } for(int i=0;i+1<path.size();i++){ DFS(path[i],-1); ans+=DP[path[i]]; } 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...