# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1160248 | mentalmath231 | 사이버랜드 (APIO23_cyberland) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int cnt = 0;
vector<int> visited(100002,0);
vector<vector<int>> kid(100002,vector<int>());
void dfs(int x){
if (visited[x]){return;}
else{
for (auto i: kid[x]){
cnt +=1;
visited[i] = 1;
dfs(i);
}
}
}
int solve(int n, int m, vector<int> f, vector<vector<int>> s) {
int ans = 0;
for (int i =1; i<n; i++){
kid[f[i]].push_back(i);
}
for (int i =0; i<n; i++){
dfs(s[0][i]);
if (cnt == i+1){
ans +=1;
}
}
return ans;
}