Submission #759062

#TimeUsernameProblemLanguageResultExecution timeMemory
759062Ronin13Pastiri (COI20_pastiri)C++14
0 / 100
533 ms79164 KiB
#include <bits/stdc++.h> #define ll long long #define ull unsigned ll #define f first #define s second #define pii pair<int,int> #define pll pair<ll,ll> #define pb push_back #define epb emplace_back using namespace std; const int nmax = 500001; int x[nmax], d[nmax]; bool active[nmax]; int dp[nmax]; int p[nmax]; vector <vector <int> > g(nmax); void dfs(int v, int e = -1){ p[v] = e; for(int to : g[v]){ if(to == e) continue; dfs(to, v); d[v] = min(d[v], d[to] + 1); } } vector <int> ans; void DFS(int v){ for(int to : g[v]){ if(to == p[v]) continue; DFS(to); d[v] = max(d[v], d[to] + 1); dp[v] = max(dp[v], dp[to] - 1); } if(d[v] < 0) return; if(v == 1 && active[v]){ if(dp[v] >= d[v]) return; ans.pb(v); dp[v] = -1; return; } if(x[p[v]] == d[v] + 1){ if(dp[v] >= d[v]) d[v] = -1e9; return; } if(dp[v] >= d[v]){ d[v] = -1e9; return; } dp[v] = d[v]; d[v] = -1e9; ans.pb(v); } int main(){ //ios_base::sync_with_stdio(false); cin.tie(0); int n, k; scanf("%d%d",&n, &k); for(int i = 1; i < n; i++){ int u, v; scanf("%d%d", &u, &v); g[u].pb(v); g[v].pb(u); } //int k; cin >> k; for(int i = 1; i <= n; i++){ x[i] = d[i] = 1e9; dp[i] = -1e9; } queue <int> q; for(int i = 1; i <= k; ++i){ int y; scanf("%d", &y); q.push(y); active[y] = true; x[y] = d[y] = 0; } while(!q.empty()){ int v = q.front(); q.pop(); for(int to : g[v]){ if(x[to] <= x[v]) continue; x[to] = x[v] + 1; q.push(to); } } dfs(1); DFS(1); printf("%d\n", ans.size()); //ans.size() << "\n"; sort(ans.begin(), ans.end()); for(int to : ans) printf("%d ", to); return 0; }

Compilation message (stderr)

pastiri.cpp: In function 'int main()':
pastiri.cpp:91:14: warning: format '%d' expects argument of type 'int', but argument 2 has type 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wformat=]
   91 |     printf("%d\n", ans.size()); //ans.size() << "\n";
      |             ~^     ~~~~~~~~~~
      |              |             |
      |              int           std::vector<int>::size_type {aka long unsigned int}
      |             %ld
pastiri.cpp:62:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   62 |     scanf("%d%d",&n, &k);
      |     ~~~~~^~~~~~~~~~~~~~~
pastiri.cpp:64:24: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   64 |         int u, v; scanf("%d%d", &u, &v);
      |                   ~~~~~^~~~~~~~~~~~~~~~
pastiri.cpp:75:21: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   75 |         int y; scanf("%d", &y);
      |                ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...