Submission #1263419

#TimeUsernameProblemLanguageResultExecution timeMemory
1263419rtriThe Xana coup (BOI21_xanadu)C++20
5 / 100
1095 ms6216 KiB
#include <bits/stdc++.h>
using namespace std;

int n;
vector<vector<int>> adj;
vector<int> cameras;

int main() {
  cin >> n;

  adj.resize(n);
  for (int i = 0; i < n - 1; i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    adj[a].push_back(b);
    adj[b].push_back(a);
  }

  cameras.resize(n);
  int def = 0;
  for (int i = 0; i < n; i++) {
    int a;
    cin >> a;
    cameras[i] = a;
    if (a)
      def |= 1 << i;
  }

  int ans = 1e9;
  for (int mask = 0; mask < pow(2, n); mask++) {
    int curr = def;
    int count = 0;
    for (int i = 0; i < n; i++) {
      if (1 & (mask >> i)) {
        count++;
        curr ^= 1 << i;
        for (int u : adj[i])
          curr ^= 1 << u;
      }
    }
    if (curr == 0) {
      ans = min(ans, count);
    }
  }

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