#include "bits/stdc++.h"
using namespace std;
typedef long long int ll;
int solve(int N, int M, vector<int> F,vector<vector<int>> S){
vector<unordered_set<int>> adjList(N);
for(int i = 1; i < N; i++){
adjList[i].insert(F[i]);
adjList[F[i]].insert(i);
}
vector<int> leafToIndex(N,-1);
for(int i = 0; i < N-1; i++){
leafToIndex[S[0][i]] = i;
}
vector<bool> visited(N);
visited[0] = true;
int counts = 0;
int components = 1;
int minIndex = N;
for(int i = N-2; i >= 0; i--){
components++;
int node = S[0][i];
for(const int &adjNode : adjList[node]){
if(visited[adjNode]) components--;
}
// cout << i << " " << components << '\n';
for(int j = 0; j < M; j++) minIndex = min(minIndex, leafToIndex[S[j][i]]);
if(components == 1 && minIndex >= i){
counts++;
}
visited[node] = true;
}
return counts;
}
// int main(){
// cout << "poop\n";
// cout << solve(5, 2, {-1, 0, 0, 1, 1}, {{1, 2, 3, 4}, {4, 1, 2, 3}}) << '\n';
// return 0;
// }
# | 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... |