#include "september.h"
#include <bits/stdc++.h>
using namespace std;
const int MXN = 1e5 + 5;
vector<int> g[MXN];
int cnt[MXN];
bool mark[MXN];
int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
for(int i=0; i<N; i++) g[i].clear(), cnt[i] = 0, mark[i] = 0;
for(int i=1; i<N; i++) g[F[i]].push_back(i);
int ans=0, dad=0, nt=0;
auto add = [&](int v) {
if(cnt[v]==0) nt++;
cnt[v]++;
if(cnt[v]==M) nt--;
if(mark[v]) return;
if(v && mark[F[v]]) dad--;
mark[v] = 1;
for(int u : g[v])
if(!mark[u])
dad++;
};
for(int l=0; l<N-1;) {
ans++;
for(int i=0; i<M; i++) add(S[i][l]);
int r=l;
while(nt || dad) {
r++;
for(int i=0; i<M; i++)
add(S[i][r]);
}
l = r+1;
}
return ans;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |