#include "circuit.h"
#include <bits/stdc++.h>
#define MOD 1000002022
using namespace std;
vector<vector<int>> child;
vector<long long> black,white;
int N,M;
void init(int iN, int iM, vector<int> P, vector<int> A) {
N = iN,M = iM;
child.resize(N);
black.resize(N+M);
white.resize(N+M);
for(int i = 1;i < P.size();i++){
child[P[i]].push_back(i);
}
for(int i = 0;i < M;i++){
if(A[i] == 1){
//black
black[N+i] = 1;
}else{
// white
white[N+i] = 1;
}
}
}
int count_ways(int L, int R) {
for(int i = L;i <= R;i++){
swap(black[i],white[i]);
}
for(int i = N-1;i >= 0;i--){
long long cblack = 0,tot = 1;
for(auto c:child[i]){
cblack = (cblack*(white[c]+black[c])+(black[c]*tot))%MOD;
tot = tot*(white[c]+black[c])%MOD;
}
tot *= child[i].size()%MOD;
black[i] = cblack;
white[i] = (tot-cblack+MOD)%MOD;
}
return black[0];
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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |