Submission #1234546

#TimeUsernameProblemLanguageResultExecution timeMemory
1234546ericl23302Beech Tree (IOI23_beechtree)C++20
5 / 100
39 ms4272 KiB
#include "beechtree.h" #include <bits/stdc++.h> using namespace std; vector<int> dfs(vector<vector<int>> &children, vector<int> &P, vector<int> &C, vector<int> &res, int cur) { vector<int> nodes = {cur}; for (auto &i : children[cur]) { auto v = dfs(children, P, C, res, i); for (auto &n : v) nodes.push_back(n); } sort(nodes.begin() + 1, nodes.end()); do { map<int, int> cnts; bool ok = true; for (int i = 1; i < nodes.size(); ++i) { if (nodes[cnts[C[nodes[i]]]] != P[nodes[i]]) { ok = false; break; } ++cnts[C[nodes[i]]]; } if (ok) { res[cur] = 1; return nodes; } } while (next_permutation(nodes.begin() + 1, nodes.end())); return nodes; } std::vector<int> beechtree(int N, int M, std::vector<int> P, std::vector<int> C) { // vector<vector<int>> children(N); // for (int i = 1; i < N; ++i) children[P[i]].push_back(i); vector<int> res(N, 0); // dfs(children, P, C, res, 0); res[N - 1] = res[N - 2] = 1; for (int i = N - 3; i >= 0; --i) { if (C[i + 1] != C[i + 2]) break; res[i] = 1; } return res; }
#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...