Submission #1003835

#TimeUsernameProblemLanguageResultExecution timeMemory
1003835vjudge1Pastiri (COI20_pastiri)C++17
8 / 100
211 ms72472 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define all(x) x.begin(), x.end() #define allr(x) x.rbegin(), x.rend() #define mp make_pair typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef complex<double> cd; const int MAXN = 5e5+10; const int MOD = 1e9+7; const int INF = 0x3f3f3f3f; const ll LINF = 0x3f3f3f3f3f3f3f3f; const double PI = acos(-1); vector<int> adj[MAXN]; int prof[MAXN], dist[MAXN], elim[MAXN], pai[MAXN]; void build(int ver, int prev=0){ prof[ver]=prof[prev]+1; pai[ver]=prev; for(auto u : adj[ver]){ if(u==prev) continue; build(u, ver); } } void dfs(int ver, int val, int lim){ elim[ver]=1; if(val==lim) return; for(auto u : adj[ver]){ if(elim[u]) continue; dfs(u, val+1, lim); } } void solve(){ int n, k; cin >> n >> k; for(int i=0;i<n-1;i++){ int a, b; cin >> a >> b; adj[a].pb(b); adj[b].pb(a); } for(int i=1;i<=n;i++) dist[i]=-1; vector<int> spec(k); queue<int> q; for(int i=0;i<k;i++){ cin >> spec[i]; q.push(spec[i]); dist[spec[i]]=0; } while(!q.empty()){ int curr=q.front(); q.pop(); for(auto u : adj[curr]){ if(dist[u]==-1){ dist[u]=dist[curr]+1; q.push(u); } } } build(1); sort(all(spec), [&](int a, int b){ return prof[a]>prof[b]; }); vector<int> ans; for(auto u : spec){ if(elim[u]) continue; int at=u, d=0; while(pai[at]!=0 && dist[pai[at]]==d+1 && !elim[pai[at]]){ d++; at=pai[at]; } ans.pb(at); dfs(at, 0, d); } cout << (int)ans.size() << "\n"; for(int i=0;i<(int)ans.size();i++) cout << ans[i] << " \n"[i==(int)ans.size()-1]; } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int tt=1; //~ cin >> tt; while(tt--) solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...