Submission #1055340

#TimeUsernameProblemLanguageResultExecution timeMemory
1055340TAhmed33Spring cleaning (CEOI20_cleaning)C++98
34 / 100
1074 ms20392 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize ("Ofast") typedef long long ll; const int MAXN = 2e5 + 25; int n, q; vector <int> adj[MAXN]; ll dp[MAXN]; int cc[MAXN]; void dfs (int pos, int par) { dp[pos] = 0; cc[pos] = 0; if (adj[pos].size() == 1 && par != -1) { dp[pos] = 1; cc[pos] = 1; return; } int cnt = 0; for (auto j : adj[pos]) { if (j != par) { dfs(j, pos); cc[pos] += cc[j]; dp[pos] += dp[j]; } } if (cc[pos] % 2 == 1) { if (par == -1) { dp[pos] = -1; return; } dp[pos] += 1; return; } if (par == -1) { return; } dp[pos] += 2; return; } void solve () { cin >> n >> q; for (int i = 1; i < n; i++) { int a, b; cin >> a >> b; adj[a].push_back(b); adj[b].push_back(a); } while (q--) { int d; cin >> d; vector <int> c; for (int i = 1; i <= d; i++) { int x; cin >> x; c.push_back(x); } for (int i = 0; i < d; i++) { adj[c[i]].push_back(n + i + 1); adj[n + i + 1].push_back(c[i]); } int r = -1; for (int i = 1; i <= n + d; i++) { if (adj[i].size() >= 2) { r = i; break; } } dfs(r, -1); cout << dp[r] << '\n'; for (int i = d - 1; i >= 0; i--) { adj[c[i]].pop_back(); adj[n + i + 1].pop_back(); } } } signed main () { ios::sync_with_stdio(0); cin.tie(0); int tc = 1; //cin >> tc; while (tc--) solve(); }

Compilation message (stderr)

cleaning.cpp: In function 'void dfs(int, int)':
cleaning.cpp:17:6: warning: unused variable 'cnt' [-Wunused-variable]
   17 |  int cnt = 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...