Submission #1197306

#TimeUsernameProblemLanguageResultExecution timeMemory
1197306batman3747September (APIO24_september)C++20
100 / 100
177 ms16320 KiB
#include "bits/stdc++.h" #define all(x) (x).begin(), (x).end() #define debug(x) cerr << (#x) << " " << (x) << endl #define SZ(s) ((int)s.size()) #define pb push_back #define ff first #define ss second using namespace std; using ll = long long; using pii = pair<int, int>; using vi = vector<int>; int solve(int n, int m, vi F, vector<vi> S){ vi l(n, n), r(n); vector<vi> g(n); for(int i = 1; i < n; i ++) g[F[i]].pb(i); for(int j = 0; j < m; j ++){ for(int i = 0; i < n - 1; i ++){ int d = S[j][i]; l[d] = min(l[d], i + 1); r[d] = max(r[d], i + 1); } } auto dfs = [&](auto &&dfs, int v, int p = -1) -> void { if(p != -1) l[v] = min(l[v], l[p]); for(int u : g[v]){ dfs(dfs, u, v); r[v] = max(r[v], r[u]); } }; dfs(dfs, 0); vector<pii> ln; for(int i = 1; i < n; i ++) ln.pb({l[i], r[i]}); sort(all(ln)); int ans = 0, cur = 0; for(auto [x, y] : ln){ if(x > cur) ans ++; cur = max(cur, y); } 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...