This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "beechtree.h"
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#define V vector
#define S second
#define F first
#define pb push_back
#define all(v) v.begin(),v.end()
using namespace std;
V<pair<int,int>>adj[(int)10];
V<V<pair<int,int>>>nodes(10);
V<int>b(10);
V<int>parent;
V<int>color;
bool check(V<pair<int,int>>permutation){
if(permutation[0].S!=0)
return false;
int size=(int)permutation.size();
for(int i=size-1;i>0;i--){
int c=0;
for(int j=i-1;j>=0;j--){
if(permutation[j].S==permutation[i].S){
c++;
}
}
if(permutation[c].F!=parent[permutation[i].F]){
return false;
}
}
return true;
}
void dfs(int n,int p){
nodes[n].pb({n,0});
for(auto u:adj[n]){
if(u.F==p)continue;
dfs(u.F,n);
nodes[u.F][0].S=color[u.F];
nodes[n].insert(nodes[n].end(),all(nodes[u.F]));
nodes[u.F][0].S=0;
}
sort(all(nodes[n]));
if(nodes[n].size()==1){
b[n]=1;
return;
}
do{
if(check(nodes[n])){
b[n]=1;
return;
}
}while(next_permutation(all(nodes[n])));
b[n]=0;
}
std::vector<int> beechtree(int N, int M, std::vector<int> P, std::vector<int> C)
{
for(int i=1;i<N;i++){
adj[P[i]].pb({i,C[i]});
adj[i].pb({P[i],C[i]});
}
for(int i=0;i<N;i++)
parent.pb(P[i]);
for(int i=0;i<N;i++)
color.pb(C[i]);
dfs(0,-1);
V<int>ans;
for(int i=0;i<N;i++)
ans.pb(b[i]);
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... |