#include <iostream>
#include <vector>
#include <bitset>
using namespace std;
using ll = long long;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(nullptr);
int n,a,b;
cin >> n;
vector<vector<int>> drzewo(n+1);
vector<int> dp(n+1,0);
for(int i=0;i<n-1;i++){
cin >> a >> b;
drzewo[a].push_back(b);
drzewo[b].push_back(a);
dp[a-1] |= (1<<(b-1));
dp[b-1] |= (1<<(a-1));
}
int mask = 0;
for(int i=0;i<n;i++){
cin >> a;
mask |= ((1&a)<<i);
dp[i] |= (1<<i);
}
int maskTemp = mask;
if(mask == 0){
cout << 0;
return 0;
}
for(int i=0;i<(1<<n);i++){
maskTemp = mask;
int licznik = 0;
for(int j=0;j<n;j++){
if((i>>j)&1){
licznik++;
maskTemp ^= dp[j];
}
}
if(maskTemp==0){
cout << licznik;
return 0;
}
}
cout << "impossible";
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |