Submission #1323318

#TimeUsernameProblemLanguageResultExecution timeMemory
1323318jakganThe Xana coup (BOI21_xanadu)C++20
5 / 100
1095 ms6116 KiB
#include <iostream>
#include <vector>
#include <bitset>
#include <set>

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;
    }

    set<int> zbior;

    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){
            zbior.insert(licznik);
        }
    }

    if(zbior.size()>0){
        for(int x : zbior){
            cout << x;
            return 0;
        }
    } else {
        cout << "impossible";
    }


    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...