제출 #1323892

#제출 시각아이디문제언어결과실행 시간메모리
1323892yc11The Xana coup (BOI21_xanadu)C++20
0 / 100
39 ms15788 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<vector<int> > n1;
vector<int> n2;
vector<int> n3;
int hi1 = 0;
bool hi2 = false;
void hi(int n,int p){
    int x = 0;
    int x1 = 0;
    for (int i = 0;i<n1[n].size();i++){

        if (n1[n][i]!=p) {hi(n1[n][i],n);x = x+n3[n1[n][i]];}

    }
    x = x+n3[n];

    if (x%2!=n2[n]%2) {
        if (p==-1) hi2 = true;
        hi1++;
        if (n1[n].size()==1) {n3[n]++;}
        else n3[p]++;}

    }
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    n1.resize(n);
    n2.resize(n);
    n3.assign(n,0);
    vector<int> n4;
    n4.assign(n,0);
    for (int i = 0;i<n-1;i++){
        int a,b;
        cin>>a>>b;
        n1[a-1].push_back(b-1);
        n1[b-1].push_back(a-1);
        if (n1[a-1].size()>1) n4[a-1] = 1;
        if (n1[b-1].size()>1) n4[b-1] = 1;
    }
    for (int i = 0;i<n;i++) cin>>n2[i];
    int c=  -1;
    for (int i = 0;i<n;i++){
        if (n4[i]==0) {c = i;break;}
    }

    hi(c,-1);
    if (!hi2) cout<<hi1;
    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...