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;
std::vector<int> beechtree(int N, int M, std::vector<int> P, std::vector<int> C)
{
vector<int> ans(N);
vector<vector<int>> arr(N);
for (int i = 1; i < N; i++){
arr[P[i]].push_back(i);
}
vector<set<int>> v(N);
function<void(int)> dfs = [&](int node)->void{
bool boolean=true;
for (auto it : arr[node]){
dfs(it);
if (ans[it]==0){
boolean=false;
}
if (boolean){
if (v[node].size()<v[it].size()) swap(v[node],v[it]);
for (auto it : v[it]){
if (v[node].find(it)!=v[node].end()){
boolean=false;
break;
}
else {
v[node].insert(it);
}
}
while (v[it].size()) v[it].erase(v[it].begin());
}
}
if (boolean){
ans[node]=1;
v[node].insert(C[node]);
}
};
dfs(0);
sort(ans.begin(), ans.end());
return ans;
}//0 alcak mi bakalm
# | 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... |