#include "beechtree.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=8;
vector<ll> sub;
vector<ll> t[N];
void dfs(ll curr){
sub.push_back(curr);
for(auto nxt:t[curr]){
dfs(nxt);
}
}
vector<int> beechtree(int n, int m, vector<int> p, vector<int> c){
for(ll i=1; i<n; i++){
t[p[i]].push_back(i);
}
vector<int> ans;
for(ll i=0; i<n; i++){
sub.clear();
dfs(i);
ans.push_back(0);
do{
// cout<<i<<endl;
ll f[n], x[m+1]={};
for(auto j:sub){
if(j==i) continue;
f[j]=x[c[j]];
x[c[j]]++;
}
bool ok=1;
for(auto j:sub){
if(j==i) continue;
if(sub[f[j]]!=p[j]) ok=0;
}
ans[i]|=ok;
} while(next_permutation(sub.begin()+1,sub.end()));
}
return ans;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |