제출 #1323316

#제출 시각아이디문제언어결과실행 시간메모리
1323316jakganThe Xana coup (BOI21_xanadu)C++20
0 / 100
1096 ms6168 KiB
#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);

        if(n<=20){
            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;
    
    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 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...