Submission #1190071

#TimeUsernameProblemLanguageResultExecution timeMemory
1190071justinlgl20The Xana coup (BOI21_xanadu)C++20
100 / 100
63 ms22088 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define all(x) (x).begin(), (x).end() template<template<typename> class Container, typename G> ostream& operator<<(ostream& os, Container<G> x) { int f = 0; os << '{'; for (auto &i: x) os << (f++ ? ", " : ""), os << i; os << "}"; return os; } void _print() {cerr << "]\n";} template<typename T, typename... V> void _print(T t, V... v) {cerr << t; if (sizeof...(v)) cerr <<", "; _print(v...);} #ifdef DEBUG #define dbg(x...) cerr << "\e[91m"<<__func__<<":"<<__LINE__<<" [" << #x << "] = ["; _print(x); cerr << "\e[39m" << endl; #else #define dbg(x...) #endif #define pii pair<int, int> #define f first #define s second vector<int> adj[100005]; int dp[100005][2][2]; int32_t main() { int n;cin>>n; for(int i=0;i<n-1;i++){ int u,v;cin>>u>>v;adj[u].emplace_back(v);adj[v].emplace_back(u); } vector<int>a(n+3);for(int i=1;i<=n;i++)cin>>a[i]; function<void(int,int)>dfs=[&](int u,int p){ for(int i=0;i<2;i++){ dp[u][a[u]^i][i]=i; dp[u][a[u]^1ll^i][i]=1e9; // not right amount of stuff to have parent and this dude } int a=0,b=0; // a is pressing us, b is not pressing us // dp[u][0][0] is pressing neither of us which means kid must have a parity of for(int i:adj[u]){ if(i==p)continue; dfs(i,u); for(int j=0;j<2;j++){ // j is whether u is being pressed a=dp[u][0][j],b=dp[u][1][j]; dp[u][0][j] = min(dp[i][j][0]+a, b+dp[i][j][1]); // j is whether or not we are pressing u, if we press a parent we gotta press the kid as well no? dp[u][1][j] = min(dp[i][j][1]+a, b+dp[i][j][0]); } } }; dfs(1,0); int ans=min(dp[1][0][0],dp[1][0][1]); if(ans>n){ cout<<"impossible\n"; }else{ cout<<ans<<"\n"; } }
#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...