Submission #1301695

#TimeUsernameProblemLanguageResultExecution timeMemory
1301695efegThe Xana coup (BOI21_xanadu)C++20
55 / 100
38 ms17252 KiB
#include <bits/stdc++.h> using namespace std; #define sz(v) (int) v.size() #define pb push_back #define popcount(x) __builtin_popcount(x) using i64 = long long; template<typename T> using vec = vector<T>; template<typename T> void chmin(T &a,T b){ a = min(a,b); } int n; vec<vec<int>> adj; vec<int> col; i64 dp[100100][2][2]; void dfs(int node,int p){ if (sz(adj[node]) == 1 && p != -1){ dp[node][col[node]][0] = 0; dp[node][(col[node] + 1) % 2][1] = 1; return; } for (auto x : adj[node]){ if (x == p) continue; dfs(x,node); } for (int mask = 0; mask < (1 << sz(adj[node])); mask++){ i64 ans1 = 0,ans2 = 0; int cnt = 0; for (int x = 0; x < sz(adj[node]); x++){ if (adj[node][x] == p) continue; if (mask & (1 << x)){ cnt++; ans1 += dp[adj[node][x]][0][1]; ans2 += dp[adj[node][x]][1][1]; } else { ans1 += dp[adj[node][x]][0][0]; ans2 += dp[adj[node][x]][1][0]; } } if (cnt & 1){ chmin(dp[node][(col[node]+1) % 2][0],ans1); chmin(dp[node][col[node]][1],ans2 + 1); } else { chmin(dp[node][col[node]][0],ans1); chmin(dp[node][(col[node]+1) % 2][1],ans2 + 1); } } } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> n; adj.assign(n,vec<int>()); col.assign(n,0); for (int i = 0; i < n-1; i++){ int u,v; cin >> u >> v; u--; v--; adj[u].pb(v); adj[v].pb(u); } for (int i = 0; i < n; i++) cin >> col[i]; for (int i = 0; i < n; i++){ for (int j = 0; j < 2; j++){ for (int k = 0; k < 2 ; k++){ dp[i][j][k] = INT_MAX; } } } dfs(0,-1); i64 ans = min(dp[0][0][0],dp[0][0][1]); if (ans == INT_MAX) cout << "impossible" << endl; else cout << ans << endl; 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...
#Verdict Execution timeMemoryGrader output
Fetching results...