Baekjoon #15681

Baekjoon #15681

3개의 풀이 · C++, Java, Python

문제 원문 보기 ↗

SOLUTION INFO

C++ · main.cpp

main.cpp
#include<bits/stdc++.h>

using namespace std;

vector<vector<int>> graph;
vector<int> siz;

void dfs(int cur, int prv) {
    siz[cur] = 1;

    for(auto &nxt: graph[cur]) {
        if(nxt == prv) continue;
        dfs(nxt, cur);
        siz[cur] += siz[nxt];
    }
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int N, R, Q; cin >> N >> R >> Q;
    graph.resize(N + 1);
    siz.resize(N + 1);
    for(int i=1;i<N;i++) {
        int a, b; cin >> a >> b;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
    dfs(R, R);
    
    while(Q--) {
        int x;cin >> x;
        cout << siz[x] << '\n';
    }

    return 0;
}

SOLUTION DESCRIPTION

풀이 설명

등록된 풀이 설명이 없습니다.