시간을 달리는 비타로

시간 제한3초메모리 제한512 MB

요약
경로 그래프의 각 간선 i는 시간 구간 [L_i, R_i)에서만 지날 수 있고 1쵸 되감기에 비용 1이 들 때, 간선 구간 갱신과 (A,B)에서 (C,D)로 가는 최소 되감기 횟수를 묻는 질의에 답한다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 그래프, 최단 경로, 수학
정답자
아직 제출이 없습니다

문제

비버랜드에는 NN개의 도시가 있다. 이 도시들은 1번부터 NN번까지 번호가 붙어있다. ii번째 (1≤i≤N−11 \le i \le N-1) 도로는 ii번 도시와 i+1i+1번 도시를 양방향으로 잇는다. 또한, 비버랜드의 하루는 1 000 000 000개의 단위시간으로 분열되어 있고, 이 단위시간을 쵸라고 부른다. 하루가 시작하고 나서 xx쵸가 지난 시간을 시각 xx라 부른다. 한 도로를 통과하는 데에는 1쵸가 걸리고, ii번째 도로는 시각 L_iL\_i와 시각 R_iR\_i 사이에만 통과할 수 있다. 구체적으로, ii번째 도로를 통과하기 위해서 우리는 도시 ii나 i+1i+1을 L_i≤x≤R_i−1L\_i \le x \le R\_i -1 을 만족하는 시각 xx에 떠나야 하고, 다른 도시에 시각 x+1x+1에 도착해야 한다.

비타로는 비버랜드에 사는 평범한 비버다. 아니, 비버였다 라고 하는게 옳은 것일까. 지각을 자주한 비타로는 이를 개선하려고 한 결과로 시간을 거슬러 올라가는게 가능해 졌다. 이 능력을 한 번 사용하면 1쵸 뒤로 갈 수 있다. 하지만, 어제로 갈 수는 없다. 만약 그가 능력을 시각 0과 시각 1 사이에 사용했다면, 그는 시각 0으로 돌아갈 것이다. 그는 이 기술을 도시에 있을 때 사용할 수 있다. 비타로의 위치는 능력을 사용해도 변하지 않는다.

비타로는 기술을 사용하면 피곤해 진다. 최소한의 기술을 사용하여 이동하는 방법을 찾기 위한 비타로는 QQ개의 사고실험을 진행했다. 사고 실험의 jj 번째 단계에서는, 그는 다음 중 한 행동을 한다:

  • P_jP\_j 번째 도로가 여행될수 있는 시각을 바꾼다. 바뀐 이후에는, 시각 S_jS\_j와 시각 E_jE\_j 사이에만 P_jP\_j 번째 도로를 통과할 수 있다.
  • 그가 A_jA\_j번 도시, 시각 B_jB\_j에 있다고 할 때, C_jC\_j번 도시, 시각 D_jD\_j로 이동하기 위해 사용해야하는 능력의 수의 최솟값을 구하여라.

그는 사고실험의 결과를 궁금해한다.

비버랜드의 도시의 수, 도로의 정보, 사고실험의 방법이 주어졌을 때, 사고 실험의 결과를 계산하는 프로그램을 작성하여라.

입력

표준 입력에서 다음과 같은 형식으로 주어진다. 모든 값은 정수이다.

NN QQ

L_1L\_1 R_1R\_1

⋮\vdots

L_N−1L\_{N-1} R_N−1R\_{N-1}

(Query 1)

⋮\vdots

(Query QQ)

여기서, (Query jj)는 공백으로 구분된 4개나 5개의 정수로 이루어져 있다. T_jT\_j가 첫 번째 정수라고 하자. 그러면,

  • T_j=1T\_j=1인 경우, (Query jj)는 4개의 정수 T_jT\_j, P_jP\_j, S_jS\_j, E_jE\_j로 이루어져 있다. 이것은, 사고 실험의 jj번째 단계에서, P_jP\_j번째 도로를 지날수 있는 시간이 시각 S_jS\_j와 시각 E_jE\_j 사이로 바뀐다는 것을 의미한다.
  • T_j=2T\_j=2인 경우, (Query jj)는 5개의 정수 T_jT\_j, A_jA\_j, B_jB\_j, C_jC\_j, D_jD\_j로 이루어져 있다. 이는, jj번째 사고 실험에서, 당신의 프로그램이 비타로가 A_jA\_j번 도시, 시각 B_jB\_j에 있다고 할 때, C_jC\_j번 도시, 시각 D_jD\_j로 이동하기 위해 사용해야하는 능력의 수의 최솟값을 구해야 한다는 것을 의미한다.

출력

T_j=2T\_j=2인 각 단계에 대해서, 사용해야 하는 능력의 수의 최솟값을 한 줄에 하나씩 차례로 출력하여라.

제한

  • 1≤N≤300 0001 \le N \le 300\ 000.
  • 1≤Q≤300 0001 \le Q \le 300\ 000.
  • 0≤L_i<R_i≤999 999 9990 \le L\_i < R\_i \le 999\ 999\ 999 (q≤i≤N−1q \le i \le N-1).
  • 1≤T_j≤21 \le T\_j \le 2 (1≤j≤Q1 \le j \le Q).
  • 1≤P_j≤N−11 \le P\_j \le N-1 (1≤j≤Q1 \le j \le Q, T_j=1T\_j = 1).
  • 1≤S_j≤E_j≤999 999 9991 \le S\_j \le E\_j \le 999\ 999\ 999 (1≤j≤Q1 \le j \le Q, T_j=1T\_j = 1).
  • 1≤A_j≤N1 \le A\_j \le N (1≤j≤Q1 \le j \le Q, T_j=2T\_j = 2).
  • 1≤B_j≤999 999 9991 \le B\_j \le 999\ 999\ 999 (1≤j≤Q1 \le j \le Q, T_j=2T\_j = 2).
  • 1≤C_j≤N1 \le C\_j \le N (1≤j≤Q1 \le j \le Q, T_j=2T\_j = 2).
  • 1≤D_j≤999 999 9991 \le D\_j \le 999\ 999\ 999 (1≤j≤Q1 \le j \le Q, T_j=2T\_j = 2).

예제4

  1. 예제 1

    입력
    3 3
    0 5
    0 5
    2 1 3 3 3
    1 2 0 1
    2 1 3 3 3
    
    예상 출력
    2
    4
    
  2. 예제 2

    입력
    5 5
    3 5
    4 8
    2 6
    5 10
    2 5 3 1 10
    2 2 6 5 6
    1 3 4 6
    2 3 3 4 3
    2 4 5 1 5
    
    예상 출력
    4
    3
    2
    3
    
  3. 예제 3

    입력
    7 7
    112103440 659752416
    86280800 902409187
    104535475 965602300
    198700180 945132880
    137957976 501365807
    257419446 565237610
    2 4 646977260 7 915994878
    2 1 221570340 6 606208433
    2 7 948545948 4 604273995
    2 7 247791098 5 944822313
    2 7 250362511 2 50167280
    2 3 364109400 4 555412865
    2 7 33882587 7 186961394
    
    예상 출력
    145611455
    0
    447180143
    0
    207252171
    0
    0
    
  4. 예제 4

    입력
    7 7
    535825574 705426142
    964175291 996597835
    481817391 649559926
    4519006 410772613
    74521477 274584126
    256535565 899389890
    1 6 511428966 602601933
    1 1 69986642 201421232
    2 3 636443425 4 625975977
    1 6 235225515 405336399
    2 3 866680458 3 701821857
    1 6 180606048 900533151
    1 6 612564160 720179605
    
    예상 출력
    10467449
    164858601