Submission #981095

#TimeUsernameProblemLanguageResultExecution timeMemory
981095vjudge1참나무 (IOI23_beechtree)C++17
0 / 100
1 ms600 KiB
#include "beechtree.h" #include <bits/stdc++.h> using namespace std; using ll = long long; using vll = vector <ll>; using vi = vector <int>; vi beechtree (int n, int m, vi p, vi c) { vector <vll> ns(n, vll({})); for (ll i = 0; i < n; i++) { ll u = p[i]; if (u != -1) { ns[u].push_back(i); } } vi ans(n, 1); vector <set <ll> > vmst; for (ll u = n-1; u >= 0; u--) { if (ns[u].size() == 0) continue; set <ll> cols; for (ll i : ns[u]) { // cerr << c[i] << ' '; if (cols.count(c[i])) ans[u] = 0; cols.insert(c[i]); } // cerr << endl; if (!ans[u]) ans[0] = 0; if (u) vmst.push_back(cols); } sort(vmst.begin(), vmst.end(), [&](auto a, auto b) { return a.size() > b.size(); }); for (ll i = 1; i < ll(vmst.size()); i++) { set <ll> st1 = vmst[i-1]; set <ll> st2 = vmst[i]; for (ll i : st2) ans[0] &= st1.count(i); } return ans; }
#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...