Submission #877643

# Submission time Handle Problem Language Result Execution time Memory
877643 2023-11-23T11:47:00 Z huutuan Pastiri (COI20_pastiri) C++14
31 / 100
1000 ms 118852 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 (vis[v]==-1){
         vis[v]=vis[u]+1;
         q.push(v);
         vv.push_back(v);
      }
   }
   for (int i:vv){
      del[i]=1;
      vis[i]=-1;
   }
}

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 (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;
}
# Verdict Execution time Memory Grader output
1 Correct 148 ms 114392 KB Output is correct
2 Correct 184 ms 113764 KB Output is correct
3 Correct 186 ms 113764 KB Output is correct
4 Correct 237 ms 118852 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 33880 KB Output is correct
2 Correct 8 ms 33892 KB Output is correct
3 Correct 591 ms 90044 KB Output is correct
4 Correct 611 ms 90048 KB Output is correct
5 Correct 627 ms 89948 KB Output is correct
6 Execution timed out 1045 ms 95992 KB Time limit exceeded
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 7 ms 33624 KB Output is correct
2 Correct 7 ms 33628 KB Output is correct
3 Correct 7 ms 33456 KB Output is correct
4 Correct 7 ms 33628 KB Output is correct
5 Correct 7 ms 33628 KB Output is correct
6 Correct 7 ms 33628 KB Output is correct
7 Correct 7 ms 33456 KB Output is correct
8 Correct 7 ms 33656 KB Output is correct
9 Correct 7 ms 33656 KB Output is correct
10 Correct 7 ms 33624 KB Output is correct
11 Correct 9 ms 33624 KB Output is correct
12 Correct 7 ms 33372 KB Output is correct
13 Correct 11 ms 33880 KB Output is correct
14 Correct 7 ms 33628 KB Output is correct
15 Correct 7 ms 33624 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 596 ms 83284 KB Output is correct
2 Correct 588 ms 89936 KB Output is correct
3 Correct 668 ms 92872 KB Output is correct
4 Correct 607 ms 89212 KB Output is correct
5 Correct 556 ms 81736 KB Output is correct
6 Correct 745 ms 96732 KB Output is correct
7 Correct 785 ms 95000 KB Output is correct
8 Correct 821 ms 94904 KB Output is correct
9 Execution timed out 1066 ms 93312 KB Time limit exceeded
10 Halted 0 ms 0 KB -