#include <bits/stdc++.h>
using namespace std;
const int MAX = 1E6;
int maxidx = 0;
vector<vector<int>> idx;
vector<vector<int>> C_List;
vector<bool> visited;
void dfs(int n, int N, int M)
{
if (visited[n])
{
return;
}
for (int i = 0; i < idx.size(); i++)
{
maxidx = max(maxidx, idx[i][n]);
}
for (int i = 0; i < C_List[n].size(); i++)
{
dfs(C_List[n][i], N, M);
}
visited[n] = true;
}
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S)
{
int ans = 0;
maxidx = 0;
idx = vector<vector<int>>(M, vector<int>(N));
C_List = vector<vector<int>>(N);
visited = vector<bool>(N, false);
for (int i = 1; i < N; i++)
{
C_List[F[i]].push_back(i);
}
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N - 1; j++)
{
idx[i][S[i][j]] = j;
}
}
for (int i = 0; i < N - 1; i++)
{
for (int j = 0; j < M; j++)
{
dfs(S[j][i], N, M);
}
if (maxidx == i)
{
ans++;
}
}
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... |