Submission #1211389

#TimeUsernameProblemLanguageResultExecution timeMemory
1211389omsincoconutBeech Tree (IOI23_beechtree)C++17
0 / 100
0 ms332 KiB
#include "beechtree.h" #include <bits/stdc++.h> using namespace std; vector<int> beechtree(int N, int M, vector<int> P, vector<int> C) { vector<int> ret(N); vector<vector<int>> child(N); for (int i = 1; i < N; i++) child[P[i]].push_back(i); vector<int> maxdeg(N), subsz(N); vector<vector<int>> have(N, vector<int>(2, 0)); for (int i = N-1; i >= 0; i--) { ret[i] = true; subsz[i] = 1; for (int v : child[i]) { maxdeg[i] = max(maxdeg[i], maxdeg[v]); have[i][0] += have[v][0]; have[i][1] += have[v][1]; subsz[i] += subsz[v]; } if (maxdeg[i] >= 2 || child[i].size() >= 2) ret[i] = false; maxdeg[i] = max(maxdeg[i], (int)child[i].size()); if (child[i].size() == 2 && subsz[child[i][0]] >= 2 && subsz[child[i][1]] >= 2) { ret[i] = false; } for (int v : child[i]) { if (have[v][0] > 0 && have[v][1] > 0) ret[i] = false; } if (i != 0) have[i][C[i]-1]++; } return ret; }
#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...