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>
using namespace std;
int N,M;
vector<vector<int>> child;
vector<int> C;
vector<int> P;
vector<int> outp;
std::vector<int> beechtree(int n, int m, std::vector<int> p, std::vector<int> c)
{
N=n; M=m;
C.assign(c.begin(), c.end());
P.assign(p.begin(), p.end());
child.resize(n);
outp.resize(n,0);
for (int i = 1; i < N; i++) child[P[i]].push_back(i);
bool df=true;
outp[0]=1;
vector<pair<int,int>> childr;
unordered_set<int> ccolors;
for (int i = 1; i < n; i++)
{
if(P[i]==0){
childr.push_back({child[i].size(),i});
unordered_set<int> clors;
if(ccolors.find(c[i])!=ccolors.end()) outp[0]=0;
ccolors.insert(c[i]);
outp[i]=1;
for (auto u : child[i])
{
if(clors.find(c[u])!=clors.end()) { outp[i]=0; df=false; break; } // la couleur est la meme dans un arbre
clors.insert(c[u]);
}
}
else if(child[i].size()==0) outp[i]=1;
}
if(!df) { outp[0]=0; return {outp}; }
sort(childr.begin(), childr.end(),greater<pair<int,int>>());
unordered_set<int> colors;
for (int i = 0; i < (int)child[0].size(); i++) colors.insert(c[child[0][i]]); // la couleur est la meme dans un arbre
for (int i = 0; i < (int)childr.size(); i++)
{
unordered_set<int> colors2;
for (auto u : child[childr[i].second])
{
if(colors.find(c[u])==colors.end()) { outp[0]=0; break; } // color in subtree is not in other tree
colors.insert(c[u]);
colors2.insert(c[u]);
}
colors.clear();
colors=colors2;
if(outp[0]==0) break;
}
return {outp};
}
# | 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... |