#127
Platinum V
트리와 경로 개수 쿼리
시간 제한
1s
메모리 제한
512MB
제출
1
정답
1
맞힌 사람
1
정답 비율
100.0%

문제

NN개의 정점으로 이루어진 트리가 있다. 정점은 11번부터 NN번까지 번호가 매겨져 있다. 정점에는 색깔이 있는데 모든 정점은 빨간색 혹은 파란색이다. 이 때, 다음과 같은 쿼리를 수행하는 프로그램을 작성해보자.

  • u : 임의의 빨간색 정점과 파란색 정점을 연결하는 단순 경로 중에서 uu번 정점을 경유하는 경로의 개수를 출력한다. 경로에는 방향성이 없으며, 어떤 경로가 uu번 정점을 경유한다는 것은 경로가 시작이나 끝이 아닌 중간에 uu번 정점을 지난다는 것이다.

입력

첫째 줄에 트리의 크기 N(1N100 000)N(1\le N \le 100\ 000)이 주어진다.

두 번째 줄에 정수 a1,a2,...,aNa_1, a_2, ..., a_N이 주어진다. ai(0ai1)a_i(0 \le a_i \le 1)ii번째 정점의 색깔이며, 11은 빨간색을, 00은 파란색을 의미한다.

세 번째 줄 부터 N1N - 1개의 줄에 트리의 두 정점을 연결하는 간선의 번호 u,v(1u,vN,uv)u, v(1\le u, v \le N, u \neq v)가 주어진다.

N+2N + 2번째 줄에 쿼리의 개수 Q(1QN)Q(1\le Q \le N)이 주어진다.

N+3N + 3번째 줄부터 QQ개의 줄에 쿼리가 주어진다.

쿼리는 하나의 정수 u(1uN)u(1 \le u \le N)로 이루어져 있다.

출력

쿼리의 수행 결과를 한 줄에 하나씩 출력한다.

예제 입력 1

5
1 1 1 0 0
1 3
3 2
3 4
3 5
3
2
3
4

예제 출력 1

0
4
0

예제 입력 2

7
1 0 1 1 1 0 0
1 2
1 3
2 4
2 5
3 6
3 7
3
1
2
3

예제 출력 2

5
4
6
문제를 만든 사람
201802070_김시온
알고리즘 분류
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
#순위사용자언어시간메모리코드 길이
5494🥇
조서현
C++26ms10868KB1189B
난이도 투표
Platinum V1명 투표· 약 2개월 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
#사용자문제결과언어시간메모리코드 길이제출 시간
5494
맞았습니다
C++26ms10868KB1189B2026. 04. 18. 13:47