# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1189746 | Tsagana | 9월 (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;
}