Submission #841415

#TimeUsernameProblemLanguageResultExecution timeMemory
841415model_codeBeech Tree (IOI23_beechtree)C++17
9 / 100
93 ms36308 KiB
// correct/sol_db_shallow.cpp #include "beechtree.h" #include <bits/stdc++.h> #define all(x) (x).begin(), (x).end() #define xx first #define yy second using namespace std; typedef pair<int, int> pii; const int N = 2e5 + 1; struct Graph { int cnt[N]; map<int, vector<int>> col[N]; } graph; bool check(int v, int u) { for (auto &pr : graph.col[v]) { auto &[col, vec] = pr; auto it = graph.col[u].find(col); if (it == graph.col[u].end() || graph.cnt[vec[0]] > graph.cnt[it->yy[0]]) { return false; } } return true; } bool distinctCols(int u) { for (auto &pr : graph.col[u]) { auto &[col, vec] = pr; if (vec.size() > 1) { return false; } } return true; } vector<int> beechtree(int n, int m, vector<int> P, vector<int> C) { for (int i = 1; i < n; ++i) { int p = P[i]; int c = C[i]; if (!graph.col[p].count(c)) { graph.col[p][c] = vector<int>(); } graph.col[p][c].push_back(i); graph.cnt[p]++; } vector<int> ans(n, 0); for (int i = 0; i < n; ++i) { if (graph.col[i].size() == 0) { ans[i] = 1; } else if (i != 0) { ans[i] = distinctCols(i); } else { ans[i] = distinctCols(i); vector<pii> children; for (auto &pr : graph.col[i]) { for (int v : pr.yy) { children.push_back({graph.cnt[v], v}); } } sort(all(children)); for (int j = 0; j < children.size() - 1; ++j) { ans[i] &= check(children[j].yy, children[j + 1].yy); } ans[i] &= check(children.back().yy, 0); } } return ans; }

Compilation message (stderr)

beechtree.cpp: In function 'std::vector<int> beechtree(int, int, std::vector<int>, std::vector<int>)':
beechtree.cpp:83:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   83 |             for (int j = 0; j < children.size() - 1; ++j)
      |                             ~~^~~~~~~~~~~~~~~~~~~~~
#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...