#include "september.h"
#include <bits/stdc++.h>
using namespace std;
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
// we iteratively go through each
unordered_map<long long, vector<long long>> adjList;
for(long long i = 1; i < N; i++) {
adjList[F[i]].push_back(i);
}
unordered_set<long long> seen;
vector<long long> counts(N, 0);
long long ans = 0;
for(long long i = 0; i < N-1; i++) {
for(long long j = 0; j < M; j++) {
if(counts[S[j][i]] == 0) {
// bfs to find which other nodes we have to track
stack<long long> bfs;
bfs.emplace(S[j][i]);
while(bfs.size()) {
long long curr = bfs.top(); bfs.pop();
for(auto k : adjList[curr]) {
if(counts[k] == 0) {
bfs.emplace(k);
}
}
seen.emplace(curr);
}
}
counts[S[j][i]]++;
if(counts[S[j][i]] == M) {
seen.erase(S[j][i]);
}
}
if(seen.empty()) 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... |