[문제 링크] : https://www.acmicpc.net/problem/15681
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, R, Q;
vector<int> V[100001];
int Arr[100001];
bool Visit[100001];
int make(int n){
if(Arr[n] != 0){
return Arr[n];
}
Visit[n] = true;
int ret = 1;
for(int i=0; i<V[n].size(); i++){
int next = V[n][i];
if(Visit[next] == true){
continue;
}
ret += make(next);
}
Arr[n] = ret;
return ret;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> N >> R >> Q;
int u, v;
for(int i=0; i<N-1; i++){
cin >> u >> v;
V[u].push_back(v);
V[v].push_back(u);
}
Arr[R] = make(R);
for(int i=0; i<Q; i++){
cin >> u;
cout << Arr[u] << "\n";
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[알고리즘] 백준 7572 - 간지(干支) (C++) (0) | 2025.02.07 |
---|---|
[알고리즘] 백준 10474 - 분수좋아해? (C++) (0) | 2025.02.05 |
[알고리즘] 백준 6198 - 옥상 정원 꾸미기 (C++) (0) | 2025.02.04 |
[알고리즘] 백준 5582 - 공통 부분 문자열 (C++) (0) | 2025.02.03 |
[알고리즘] 백준 6321 - IBM 빼기 1 (C++) (0) | 2025.02.02 |