| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 5 초 | 1024 MB | 34 | 7 | 6 | 20.690% |
경곽마을은 트리 구조를 가지고 있다. 이 마을은 매우 거대하여 트리의 정점이 무려 $10^9$개까지 존재할 수 있다. 자세한 입력 방법은 후술한다.
경곽마을에는 $M$명의 주민들이 살고 있으며, 각 주민은 $1$부터 $M$까지의 번호를 중복되지 않게 부여받는다. 주민들은 총 $Q$개의 정기 모임을 개최하려고 한다.
$i$번 주민은 정점 $x_i$에 집이 있으며, 그곳에서 살고 있다. 한 정점에는 여러 주민이 함께 살 수 있다. 주민들은 먼 거리를 이동하는 것을 선호하지 않아 각자 자신의 집으로부터 최대로 이동할 수 있는 거리 $d_i$가 정해져 있다. 두 정점 사이의 거리는 한 정점에서 다른 정점으로 이동할 때 거쳐야 하는 최소 간선의 수로 정의된다.
각 정기 모임에는 $l_i$번 주민부터 $r_i$번 주민까지가 참여하려고 한다. 각 정기 모임에 대해, 모든 참여 대상 주민들이 모일 수 있는 정점의 개수를 구해 보자.
첫 번째 줄에 세 정수 $N$, $M$, $Q$가 공백으로 구분되어 주어진다. $N$은 초기 정점의 수이고, $M$은 주민의 수, $Q$는 정기 모임의 횟수이다.
두 번째 줄부터 $N-1$개의 줄에 걸쳐 트리의 구조를 나타내는 정보가 주어진다. 그중 $i$번째 줄에는 세 정수 $u_i$, $v_i$, $c_i$가 공백으로 구분되어 주어진다. 이는 정점 $u_i$와 $v_i$를 잇는 경로가 있으며, 그 위에 새로운 정점이 $c_i$개 추가됨을 의미한다.
새로운 정점은 다음과 같은 규칙으로 생성된다. $i$번째 입력에서 생성되는 $c_i$개의 정점은 $u_i$에서 $v_i$ 방향으로 순서대로 연결되며, 이 정점의 번호는 $N + \sum_{j=1}^{i-1} c_j + 1$부터 $N + \sum_{j=1}^{i} c_j$까지 순차적으로 부여된다.
주어지는 간선 정보들은 반드시 하나의 트리를 이루도록 보장된다.
그다음 줄부터 $M$개의 줄에 걸쳐 각 주민의 정보가 주어진다. 그중 $i$번째 줄에는 두 정수 $x_i$와 $d_i$가 공백으로 구분되어 주어지며, 이는 $i$번 주민이 정점 $x_i$에 살고 있고, 최대 $d_i$만큼의 거리를 이동할 수 있음을 의미한다.
그다음 줄부터 $Q$개의 줄에 걸쳐 각 정기 모임의 정보가 주어진다. 그중 $i$번째 줄에는 두 정수 $l_i$와 $r_i$가 공백으로 구분되어 주어지며, 이는 $l_i$번 주민부터 $r_i$번 주민까지가 해당 모임에 참여함을 의미한다.
$Q$개의 줄에 걸쳐서 주어진 문제의 답을 출력하여라. 그중 $i$번째 줄에는 $i$번째 정기 모임에 대해 모든 참여 대상 주민들이 도달할 수 있는 정점의 개수를 출력하여라.
5 7 5 2 3 0 2 1 0 3 5 2 3 4 2 1 4 2 5 2 4 7 5 1 3 1 5 6 4 6 6 2 7 3 3 1 1 3 7
9 5 9 7 5
[그림 1] 예제 입력에 해당하는 트리
School > 경기과학고등학교 > 나는코더다 송년대회 > 나는코더다 2024 송년대회 L번