Submission #1173033

#TimeUsernameProblemLanguageResultExecution timeMemory
1173033Robert_juniorSeptember (APIO24_september)C++20
0 / 100
2 ms5192 KiB
#include<bits/stdc++.h> using namespace std; const int N = 2e5 + 7; vector<int>g[N]; int sz[N], pr[N]; void dfs(int v, int p){ pr[v] = p; sz[v] = 1; for(auto to : g[v]){ if(to == p) continue; dfs(to, v); sz[v] += sz[to]; } } int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S){ vector<int>cnt(N); for(int i = 0; i < N; i++){ g[i].clear(); sz[i] = cnt[i] = pr[i] = 0; } for(int i = 1; i < N; i++){ g[F[i]].push_back(i); } dfs(0, 0); int cur = 0; int ans = 0; int j = 0; while(j < N - 1){ for(int i = 0; i < M; i++){ cnt[S[i][j]]++; if(sz[S[i][j]] > 1 || S[i][j] == 0){ return 1; } if(cnt[S[i][j]] == M){ cur++; sz[pr[S[i][j]]]--; } } if(cur == j + 1) ans++; j++; } 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...