제출 #783625

#제출 시각아이디문제언어결과실행 시간메모리
783625andecaandeciThe Xana coup (BOI21_xanadu)C++17
5 / 100
1082 ms6528 KiB
#include <bits/stdc++.h>
// #define int long long
#define fi first
#define se second
#define keish                             ios_base::sync_with_stdio(0);       cin.tie(0); cout.tie(0)
      
using namespace std;

int n, u, v, x;

signed main(){
      keish;
  cin >> n;
      vector<vector<int>> e(n);
      for(int i = 1; i < n; i++){
            cin >> u >> v; u--, v--;
            e[u].push_back(v);
            e[v].push_back(u);
      }
      
      vector<int> v(n);
      for(auto &x : v) cin >> x;

      auto can = [&](vector<int> v, int mask){
            int i = 0;
            while(mask){
                  if(mask & 1){
                        v[i] ^= 1;
                        for(auto x : e[i]){
                              v[x] ^= 1;
                        }
                  }
                  mask >>= 1; i++;
            }
            
            bool ok = 1;
            for(auto x : v) ok &= !x;
            return ok;
      };

      int ans = 1e9;
      for(int i = 0; i < 1 << n; i++){
            if(can(v, i)){
                  ans = min(ans, __builtin_popcount(i));
            }
      }

      if(ans == 1e9) 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...