페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#8571
서브태스크

택배 운송 3s 1024MB

문제

2050년, 택배 최적화 연구소(KOI, Kurier Optimization Institute)는 전국 규모의 로봇 기반 택배 운송망을 구축하였다.

전국에는 1부터 N까지의 번호가 붙은 N개의 물류센터가 N-1개의 도로로 연결되어 있다. 각 도로에는 1부터 N-1까지의 번호가 붙어 있으며, 이 중 i (1 \le i \le N -1)번 도로는 U_i번 물류센터와 V_i번 물류센터를 두 끝점으로 하고, 길이가 W_i인 선분이다. 한 물류센터에서 다른 어떤 물류센터로도 하나 이상 도로를 거쳐 도달할 수 있다. 즉, 택배 운송망은 물류센터가 도로를 통해 연결된 트리 구조이다. 또한, 서로 다른 두 도로는 양 끝점을 제외한 어떤 점에서도 만나지 않는다.

각 물류센터 및 각 도로 위의 임의의 점을 모두 하나의 지점이라고 하자. 물류센터와 도로의 구조가 트리이므로, 서로 다른 두 지점 사이에는 반드시 유일한 단순 경로가 존재한다. 두 지점 x, y 사이의 거리 d(x,y)를 "지점 x에서 지점 y로 가는 단순 경로를 따라 이동할 때 거쳐야 하는 도로의 총 길이"로 정의하자. 단 x=y이면 d(x,y)=0이다.

일부 물류센터에는 전파 범위가 주어진 로봇이 배치된다. 전파 범위가 X인 로봇의 초기 위치가 지점 p라면, 이 로봇은 조건 d(p,z) \le X를 충족하는 모든 지점 z 사이를 자유롭게 왕복하며 이동할 수 있고, 자신이 이동 가능한 범위 내의 임의의 지점에서 택배를 들어올리거나 내려놓을 수 있다.

당신은 연구소의 책임자로서, 처음에 1번 물류센터에 있는 택배를 N번 물류센터까지 운송할 수 있을지 판단하려고 한다. 로봇들은 서로 협력하여 택배를 운송할 수 있다. 즉, 한 로봇이 어느 지점에 택배를 내려놓으면 다른 로봇이 바로 그 지점에서 다시 택배를 들어올려 운송을 계속할 수 있다.

당신은 총 Q개의 시나리오에 대해, 로봇이 서로 협력하여 1번 물류센터에 있는 택배를 N번 물류센터까지 운송할 수 있을지 판단하여야 한다. j (1 \le j \le Q)번째 시나리오의 형식은 다음과 같다.

  • 1 \,A_j \, B_j: j번째 시나리오는 j-1번째 시나리오의 상황에서, 초기 위치가 A_j번 물류센터이고 전파 범위가 B_j인 로봇 하나가 추가된 상황이다.

  • 2 \, C_j: j번째 시나리오는 j-1번째 시나리오의 상황에서, C_j번째 시나리오에서 새로 추가된 로봇을 제거한 상황이다. C_j번째 시나리오는 로봇을 새로 추가하는 시나리오임이 보장된다.

단, 0번째 시나리오는 초기에 아무 로봇도 배치되지 않은 상황으로 간주한다.

각 시나리오에 대하여, 로봇이 서로 협력하여 1번 물류센터에 있는 택배를 N번 물류센터까지 운송할 수 있는지 판단하는 프로그램을 작성하라.

[제약 조건]

  • 주어지는 모든 수는 정수이다.

  • 2 \le N \le 200\,000

  • 1 \le Q \le 200\,000

  • 1 \le i \le N-1인 각 i에 대하여, 1 \le U_i, V_i \le N이고, 1 \le W_i \le 10^9

  • 운송망은 연결되어 있다.

  • 1 \le j \le Q인 각 j에 대하여:

    • j번째 시나리오가 로봇을 새로 추가하는 시나리오라면, 1\le A_j \le N이고 1\le B_j \le 10^{15}이다.

    • j번째 시나리오가 로봇을 제거하는 시나리오라면, 1 \le C_j \le j-1이고, C_j번째 시나리오는 로봇을 새로 추가하는 시나리오이다. 같은 로봇이 2회 이상 제거되지 않는다.


입력

첫째 줄에 두 정수 N, Q가 공백을 사이에 두고 주어진다.

다음 N-1개의 줄에는 도로의 정보가 주어진다. 이 중 i (1 \le i \le N-1)번째 줄에는 세 정수 U_i, V_i, W_i가 공백을 사이에 두고 주어진다.

다음 Q개의 줄에는 시나리오의 정보가 주어진다. 이 중 j (1 \le j \le Q) 번째 줄에는 j번째 시나리오에 대한 정보가 지문에 제시된 형식대로 주어진다.


출력

Q개의 줄을 출력한다. j (1 \le j \le Q)번째 줄에는 j번째 시나리오에서 택배 운송이 가능하다면 YES를, 불가능하다면 NO를 출력한다.


부분문제

번호 점수 조건
#18점

N \le 100, Q \le 6, 1 \le i \le N-1인 각 i에 대하여, W_i \le 10이다.

#213점

1 \le i \le N-1인 각 i에 대하여, U_i = i이고, V_i = i+1이다. 또한, N,Q \le 2\,500이다.

#325점

N,Q \le 2\,500

#427점

1 \le i \le N-1인 각 i에 대하여, U_i = i이고, V_i = i +1이다.

#530점

모든 시나리오는 로봇을 새로 추가하는 시나리오이다.

#626점

1 \le i \le N-1인 각 i에 대하여, W_i=1, 1 \le j \le Q인 각 j에 대하여, j번째 시나리오가 로봇을 새로 추가하는 시나리오라면, B_j \le 10이다.

#721점

추가 제약 조건 없음


예제

11 10
1 3 3
2 3 10
3 4 5
4 5 8
9 6 4
4 7 2
7 8 2
5 9 1
9 10 2
5 11 3
1 1 4
1 2 12
1 6 6
1 7 1
1 8 8
1 9 6
1 10 9
1 11 2
2 7
2 1
NO
NO
NO
NO
NO
YES
YES
YES
YES
NO

여덟 번째 시나리오를 생각하자. 총 여덟 개의 로봇이 배치되어 있다. 택배의 가능한 운송 방법 중 하나는 다음과 같다.

  1. 1번 물류센터에 있는 유일한 로봇은 전파 범위가 4이다. 이 로봇이 1번 물류센터에서 택배를 들고 3번 물류센터에 내려놓는다.

  2. 2번 물류센터에 있는 유일한 로봇은 전파 범위가 12이다. 이 로봇이 3번 물류센터로 이동해 택배를 들어올리고, 3번 물류센터에서 4번 물류센터로 가는 도로에서 3번 물류센터와 1만큼 떨어진 위치에 내려놓는다.

  3. 8번 물류센터에 있는 유일한 로봇은 전파 범위가 8이다. 이 로봇이 3번 물류센터에서 4번 물류센터로 가는 도로에서 3번 물류센터와 1만큼 떨어진 위치로 이동해 택배를 들어올리고, 4번 물류센터에서 5번 물류센터로 가는 도로에서 4번 물류센터와 3만큼 떨어진 위치에 내려놓는다.

  4. 10번 물류센터에 있는 유일한 로봇은 전파 범위가 9이다. 이 로봇이 4번 물류센터에서 5번 물류센터로 가는 도로에서 4번 물류센터와 3만큼 떨어진 위치로 이동해 택배를 들어올리고, 11번 물류센터에 내려놓는다.

택배를 운송할 수 있으므로 YES를 출력해야 한다.

열 번째 시나리오를 생각하자. 총 여섯 개의 로봇이 배치되어 있다. 초기에 1번 물류센터에 놓여 있는 택배를 들어올릴 수 있는 로봇이 없으므로, 택배를 운송할 수 없다. 따라서 NO를 출력해야 한다.



출처

2025 KOI 1차 고3

로그인해야 코드를 작성할 수 있어요.