Submission #1234544

#TimeUsernameProblemLanguageResultExecution timeMemory
1234544ericl23302참나무 (IOI23_beechtree)C++20
9 / 100
2096 ms58948 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); 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...