만드는 중입니다

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

자전거 투어

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

요약
각 교차로에서 출발해 같은 도로를 두 번 쓰지 않고 돌아오는 경로 중, 가장 큰 높이 차이의 최솟값을 구합니다.
난이도

보통10점 중 6점

유형
유니온 파인드, 정렬, 그래프
정답자
아직 제출이 없습니다

문제

자카르타에는 N개의 교차로(1번부터 N번까지 번호가 매겨져 있음)가 있고, 양방향 도로 M개로 연결되어 있다. 어느 교차로에서든 하나 이상의 도로를 거쳐 다른 모든 교차로에 갈 수 있다. i번 교차로의 높이는 HiH_i이다.

아마드는 자전거 타기를 좋아하고, 특히 평평한 도로에서 타는 것을 좋아한다. 그는 오르막이나 내리막에서는 자전거를 타는 데 더 큰 힘이 든다고 주장한다. 구체적으로, 교차로 i와 교차로 j를 잇는 도로에서 자전거를 타려면 ∣Hi−Hj∣|H_i - H_j|만큼의 힘이 필요하다. 도로들의 집합을 달리는 데 필요한 힘은 그 도로들 각각이 요구하는 힘 중 가장 큰 값이다. 예를 들어 도로 세 개가 각각 10, 12, 7의 힘을 요구하면, 이 세 도로를 모두 달리는 데 필요한 힘은 max(10, 12, 7) = 12이다.

교차로 i에서 출발하는 자전거 경로는 교차로 i에서 출발해 다른 교차로를 하나 이상 거치고, 같은 도로를 두 번 이상 쓰지 않으며, 다시 교차로 i에서 끝나는 주행 경로이다.

각 교차로마다 필요한 힘이 최소인 자전거 경로를 구하라. 어떤 교차로에서 자전거 경로를 만들 수 없으면 그 교차로에는 -1을 출력한다.

입력

첫 줄에 교차로 수 N과 도로 수 M이 공백으로 구분된 두 정수로 주어진다(2≤N≤1000002 \le N \le 100000, N−1≤M≤200000N - 1 \le M \le 200000). 둘째 줄에는 각 교차로의 높이 H_i(0≤Hi≤1090 \le H_i \le 10^9)가 N개의 정수로 주어진다. 이어지는 M개의 줄에는 각각 두 정수 u_i와 v_i(1≤ui<vi≤N1 \le u_i < v_i \le N)가 주어지며, 이는 교차로 u_i와 v_i를 잇는 도로를 뜻한다. 주어진 그래프는 연결되어 있다. 두 교차로를 잇는 도로는 최대 한 개이다.

출력

N개의 정수를 한 줄에 공백 한 칸으로 구분해 출력한다. i번째 정수는 교차로 i에서 출발하는 자전거 경로 중 필요한 힘이 최소인 경로의 필요한 힘이다. 교차로 i에서 출발하는 자전거 경로가 없으면 -1을 출력한다.

예제3

  1. 예제 1

    입력
    8 11
    5 2 7 0 10 6 6 6
    1 2
    1 3
    2 3
    2 4
    2 5
    2 7
    3 5
    1 6
    6 7
    6 8
    7 8
    
    예상 출력
    4 4 5 -1 8 0 0 0
    
  2. 예제 2

    입력
    4 5
    10 20 30 40
    1 2
    1 3
    1 4
    2 3
    3 4
    
    예상 출력
    20 20 20 30
    
  3. 예제 3

    입력
    5 4
    72 35 22 49 108
    1 2
    2 3
    3 4
    4 5
    
    예상 출력
    -1 -1 -1 -1 -1