만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

무자비한 최단 경로

시간 제한2초메모리 제한1024 MB

요약
1번 마을에서 모든 마을까지의 최단 거리를 구하는 문제로, 도로는 좌표 차이의 최솟값과 z 합이 K로 나누어떨어지는 조건으로 정해집니다.
난이도

어려움10점 중 8점

유형
최단 경로, 그래프, 정렬
정답자
아직 제출이 없습니다

문제

신촌 초급반 학생들은 그래프에서 최단 경로를 구하는 여러 방법을 공부했다. 학생들에게 벽을 느끼게 하고 싶었던 djs100201은 무자비한 최단 경로 문제를 만들었다.

11번부터 NN번까지 번호가 매겨진 NN개의 마을이 있다. ii번째 마을의 위치는 (x_i,y_i,z_i)(x\_i,y\_i,z\_i)로 표현된다. 11 이상 NN 이하의 서로 다른 두 정수 i,ji,j에 대해, ii번 마을과 jj번 마을을 잇는 길이 min⁡(∣x_i−x_j∣,∣y_i−y_j∣)\min(|x\_i-x\_j|,|y\_i-y\_j|)인 양방향 도로가 존재한다. 또한 z_i+z_jz\_i+z\_j가 KK로 나누어 떨어지면, ii번 마을과 jj번 마을을 잇는 길이 z_i+z_jz\_i+z\_j인 양방향 도로도 존재한다.

이때 11번 마을에서 각 마을까지의 최단 경로 길이를 모두 구해보자.

입력

첫째 줄에 정수 NN과 KK가 공백으로 구분되어 주어진다. (1≤N,K≤200 000)(1 \leq N,K \leq 200\,000)

둘째 줄부터 NN개의 줄에 걸쳐 i+1i+1번째 줄에는 ii번 마을의 위치를 나타내는 세 정수 (x_i,y_i,z_i)(x\_i,y\_i,z\_i)가 공백으로 구분되어 주어진다. (0≤x_i,y_i,z_i≤109)(0 \leq x\_i,y\_i,z\_i \leq 10^9)

출력

총 NN줄에 걸쳐 답을 출력한다. ii번째 줄에는 11번 마을에서 ii번 마을까지 도착하는 최단 경로의 길이를 출력한다.

예제2

  1. 예제 1

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

    입력
    3 2
    1 2 3
    3 4 1
    1 2 3
    
    예상 출력
    0
    2
    0