#include "september.h"
#include <bits/stdc++.h>
using namespace std;
int solve(int N, int M, vector<int> F, vector<vector<int>> S)
{
vector<vector<int>> adj(N, vector<int>());
for(int i = 1; i < N; i++)
adj[F[i]].push_back(i);
vector<bool> vis(N, false);
vector<vector<int>> pos(M, vector<int>(N));
for(int i = 0; i < M; i++)
for(int j = 0; j < N - 1; j++)
pos[i][S[i][j]] = j;
int K = 0;
int mx = 0;
auto dfs = [&](auto self, int u) -> void
{
if(vis[u])
return;
for(int i = 0; i < M; i++)
if(mx < pos[i][u])
mx = pos[i][u];
vis[u] = true;
for(auto i: adj[u])
self(self, i);
};
for(int i = 0; i < N - 1;)
{
dfs(dfs, S[0][i]);
while(i < mx)
{
dfs(dfs, S[0][i]);
i++;
}
K++;
mx++;
}
return K - 1;
}
# | 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... |