# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
877639 | 2023-11-23T11:41:08 Z | huutuan | Pastiri (COI20_pastiri) | C++14 | 8 ms | 31576 KB |
#include<bits/stdc++.h> #define taskname "sheep" using namespace std; const int N=5e5+1; int n, k, a[N], dep[N], par[N], dist[N], del[N], vis[N]; set<int> g[N]; void bfs(){ memset(dist, -1, sizeof dist); queue<int> q; for (int i=1; i<=n; ++i) if (a[i]) q.push(i), dist[i]=0; while (q.size()){ int u=q.front(); q.pop(); for (int v:g[u]) if (dist[v]==-1){ dist[v]=dist[u]+1; q.push(v); } } } void dfs(int u, int p){ par[u]=p; for (int v:g[u]) if (v!=p){ dep[v]=dep[u]+1; dfs(v, u); } } void bfs(int root){ queue<int> q; vector<int> vv; q.push(root); vis[root]=0; vv.push_back(root); while (q.size()){ int u=q.front(); q.pop(); if (vis[u]==dist[root]) continue; for (int v:g[u]) if (!del[v] && vis[v]==-1){ vis[v]=vis[u]+1; q.push(v); vv.push_back(v); } } for (int i:vv){ del[i]=1; for (int j:g[i]) g[j].erase(i); g[i].clear(); } } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout); cin >> n >> k; for (int i=1; i<n; ++i){ int u, v; cin >> u >> v; g[u].insert(v); g[v].insert(u); } for (int i=1; i<=k; ++i){ int x; cin >> x; a[x]=1; } bfs(); dfs(1, 0); memset(vis, -1, sizeof vis); vector<int> vv; for (int i=1; i<=n; ++i) if (a[i]) vv.push_back(i); sort(vv.begin(), vv.end(), [&](int x, int y){ return dep[x]<dep[y]; }); vector<int> ans; while (vv.size()){ int u=vv.back(); vv.pop_back(); int v=u; while (par[v] && dist[par[v]]==dep[u]-dep[par[v]]) v=par[v]; ans.push_back(v); bfs(v); while (vv.size() && del[vv.back()]) vv.pop_back(); } cout << ans.size() << '\n'; for (int i:ans) cout << i << ' '; return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 8 ms | 31320 KB | Unexpected end of file - int32 expected |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 31324 KB | Unexpected end of file - int32 expected |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 31576 KB | Unexpected end of file - int32 expected |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 31324 KB | Unexpected end of file - int32 expected |
2 | Halted | 0 ms | 0 KB | - |