# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1189746 | Tsagana | September (APIO24_september) | C++20 | 0 ms | 0 KiB |
#include "september.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> adj[100010];
set<int> s;
void dfs(int u, int p = -1) {
s.insert(u);
for (auto i: adj[u]) {
if (i == p) continue ;
if (s.find(i) == s.end()) dfs(i);
}
}
int solves(int N, int M, vector<int> F, vector<vector<int>> S) {
for (int i = 1; i < F.size(); i++) {
adj[F[i]].push_back(i);
}
vector<int> v = S[0];
int ans = 0;
for (int i = 0; i < v.size(); i++) {
if (s.empty()) ans++;
if (s.find(v[i]) == s.end()) {
dfs(v[i]);
}
s.erase(v[i]);
}
return ans;
}