Submission #1061203

#TimeUsernameProblemLanguageResultExecution timeMemory
1061203tolbiBeech Tree (IOI23_beechtree)C++17
0 / 100
0 ms436 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...