만드는 중입니다

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

비행기 타고 가요

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

요약
출발 도시와 도착 도시의 범위가 정해진 티켓을 한 번씩만 써서 도시 K에서 각 도시까지 가는 최소 비용을 구합니다.
난이도

보통10점 중 7점

유형
최단 경로, 세그먼트 트리, 유니온 파인드
정답자
아직 제출이 없습니다

문제

정보과학을 잘하는 사람만 거주할 수 있다는 국가, '경곽국'을 아는가? 경곽국은 총 NN개의 도시로 이루어져 있으며, 각각 1번부터 NN번까지 번호가 붙어 있다.

경곽국에서 도시 사이를 이동하는 수단은 비행기뿐이다. 모든 도시쌍에 대하여 그 두 도시 사이를 경유하는 비행기가 존재한다. 다만, 비행기를 타려면 '비행기 표'가 필요하다. 경곽국에서 구매할 수 있는 비행기 표는 총 MM개이며, 각각 1번부터 MM번까지 번호가 붙어 있다. ii번 표의 가격은 AiA_i원이고, 출발 도시의 번호가 BiB_i 이상 CiC_i 이하이고 도착 도시의 번호가 DiD_i 이상 EiE_i 이하일 때에만 사용할 수 있다 (1≤i≤M1 \le i \le M).

모든 MM개의 표는 일회용이며 한 번만 구매할 수 있다.

교준이의 집은 KK번 도시에 있다. 현재 교준이는 집에서 놀고 있다.

교준이가 집을 나와 XX번 도시로 가기 위해 구매해야 하는 표 값의 합의 최솟값을 WXW_X라 하자 (1≤X≤N1 \le X \le N). 단, 교준이는 집을 나오기 전에 필요한 모든 비행기 표를 구매한다. 어떻게 표를 사서 이동하더라도 XX번 도시로 갈 수 없다면 WX=−1W_X = -1로 정의한다.

W1,⋯ ,WNW_1, \cdots, W_N의 값을 모두 구하는 프로그램을 작성하시오.

입력

첫 번째 줄에 도시의 개수 NN, 비행기 표의 총 개수 MM, 교준이의 집이 있는 도시의 번호 KK가 공백으로 구분되어 주어진다.

두 번째 줄부터 MM개의 줄에 걸쳐 비행기 표의 정보가 주어진다. (i+1)(i+1)번째 줄에는 ii번 표의 정보인 다섯 정수 AiA_i, BiB_i, CiC_i, DiD_i, EiE_i가 공백으로 구분되어 주어진다 (1≤i≤M1 \le i \le M).

출력

첫 번째 줄에 NN개의 정수 W1,⋯ ,WNW_1, \cdots, W_N을 공백으로 구분하여 차례대로 출력한다.

WK=0W_K = 0임에 유의하라.

제한

  • 1≤N≤250,0001 \le N \le 250{,}000
  • 1≤M≤250,0001 \le M \le 250{,}000
  • 1≤K≤N1 \le K \le N
  • 0≤Ai≤1090 \le A_i \le 10^9 (1≤i≤M1 \le i \le M)
  • 1≤Bi≤Ci≤N1 \le B_i \le C_i \le N (1≤i≤M1 \le i \le M)
  • 1≤Di≤Ei≤N1 \le D_i \le E_i \le N (1≤i≤M1 \le i \le M)

예제3

  1. 예제 1

    입력
    1 1 1
    0 1 1 1 1
    
    예상 출력
    0
    
  2. 예제 2

    입력
    3 1 1
    10 1 2 3 3
    
    예상 출력
    0 -1 10
    
  3. 예제 3

    입력
    5 2 1
    5 2 3 4 5
    5 1 5 2 2
    
    예상 출력
    0 5 -1 10 10