반응형

 

<코드>

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int N, R, Q;
int a, b, x;
int ans[100001];
bool visit[100001];
vector<int> v[100001];

int solve(int now)
{
	visit[now] = true;

	for (int i = 0; i < v[now].size(); i++)
	{
		int next = v[now][i];
		if (!visit[next])
		{
			ans[now] += solve(next);
		}
	}

	return ans[now];
}

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

	cin >> N >> R >> Q;

	for (int i = 0; i < N - 1; i++)
	{
		cin >> a >> b;
		v[a].push_back(b);
		v[b].push_back(a);
	}

	for (int i = 1; i <= N; i++)
		ans[i] = 1;

	solve(R);

	for (int i = 0; i < Q; i++)
	{
		cin >> x;
		cout << ans[x] << '\n';
	}

}

 

 

 

 

www.acmicpc.net/problem/15681

 

15681번: 트리와 쿼리

트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105) 이어 N-1줄에 걸쳐, U V의 형태로 트리에 속한 간선의 정보가 주어진다. (1 ≤ U, V ≤ N, U ≠ V)

www.acmicpc.net

 

반응형

+ Recent posts