#include "september.h"
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> ch;
vector<bool> vis, passed;
queue<int> q;
void dfs(int node){
vis[node] = true;
for(int i : ch[node]){
if(!vis[i]) dfs(i);
}
q.push(node);
}
/*
1
5 2
0 0 1 1
1 2 3 4
4 1 2 3
*/
int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
ch.resize(N);
int k, ans = N;
for(int i = 1; i < N-1; i++){
ch[F[i]].push_back(i);
}
for(vector<int> i : S){
k = 0;
vis.assign(N, false);
passed.assign(N, false);
for(int j : i){
passed[j] = true;
if(q.empty()) k++;
if(!vis[j]) dfs(j);
if(passed[q.front()]){
while(passed[q.front()]) q.pop();
}
}
ans = min(ans, k);
}
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... |