등산

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

요약
목표 지점을 골라 집에서 오르막으로 목표까지 간 뒤 내리막으로 대학까지 이동해 만족도에서 소모 체력을 뺀 값을 최대화하거나 불가능하면 Impossible을 출력합니다.
난이도

어려움10점 중 8점

유형
그래프, 최단 경로, 분할 정복, 유니온 파인드
정답자
아직 제출이 없습니다

문제

주환이는 요즘 등산에 빠졌다. 주환이는 등산을 위해 지도를 가지고 있는데, 그 지도에는 각 지점의 높이와 갈 수 있는 다른 지점까지의 거리가 표시되어 있다.

주환이는 아침에 집에서 출발하여 등산을 갔다가, 오후 수업을 듣기 위해 고려대학교로 돌아와야 한다.

  1. 주환이는 지도의 임의의 지점을 골라, 그 지점을 목표로 정한다. 집 또는 고려대학교는 목표로 선택할 수 없다.
  2. 주환이가 집에서 정한 목표에 도달할 때까지는 항상 높이가 증가하는 방향으로만 이동해야 한다.
  3. 주환이가 정한 목표에 도달한 후, 고려대학교로 갈 때에는 항상 높이가 감소하는 방향으로만 이동해야 한다.
  4. 주환이는 거리 1을 움직일 때마다 DD의 체력이 소모된다.
  5. 주환이는 정한 목표에 도달하면 높이 1당 EE의 성취감을 얻는다. 즉 높이가 hh인 목표에 도달하면 hEhE의 성취감을 얻는다.

주환이는 이 등산의 가치를 (얻은 성취감) - (소모한 체력) 으로 계산하기로 하였다. 주환이를 위해 가치가 가장 높은 등산 경로를 선택해주자.

입력

첫 번째 줄에 지도에 표시된 지점의 개수, 지점을 잇는 경로의 개수, 주환이의 거리 비례 체력 소모량, 높이 비례 성취감 획득량을 나타내는 정수 NN, MM, DD, EE가 공백을 사이에 두고 주어진다. (2 ≤ NN ≤ 100,000, 1 ≤ MM ≤ 200,000, 1 ≤ DD ≤ 100, 1 ≤ EE ≤ 100)

두 번째 줄에 NN개의 정수 h1,...,hNh_1, ... ,h_N이 공백으로 구분되어 주어진다. hih_i는 ii번째 지점의 높이를 의미한다. (1 ≤ hih_i ≤ 1,000,000, 1 ≤ ii ≤ NN)

세 번째 줄부터 MM개의 줄에 걸쳐 세 정수 a,b,na, b, n이 공백으로 구분되어 주어진다. 이는 aa번 지점과 bb번 지점을 잇는 거리 nn의 양방향 경로가 있음을 의미한다. (1 ≤ a,ba, b ≤ NN, 1 ≤ nn ≤ 100,000)

어떤 지점에서 다른 지점으로 가는 경로가 여러 개 있을 수도 있으며 (등산로는 여러 개가 있을 수 있다), 한 지점에서 출발해 그 지점으로 돌아가는 경로가 있을 수도 있다 (쉼터에서 몇 바퀴 돌며 쉴 수도 있다).

주환이의 집은 1번 지점에 위치하고, 고려대학교는 NN번 지점에 위치하며 주환이의 집과 고려대학교의 높이는 1임이 보장된다.

출력

첫 번째 줄에 주환이가 얻을 수 있는 가치의 최댓값을 출력한다. 만약 조건을 만족하는 등산 경로를 선택할 수 없다면, Impossible을 출력한다. 답이 음수일 수 있음에 유의하여라.

예제2

  1. 예제 1

    입력
    8 13 4 9
    1 4 7 3 10 2 15 1
    1 2 3
    3 4 2
    5 6 6
    7 8 2
    2 3 4
    6 7 2
    3 6 1
    4 8 3
    5 1 6
    8 3 5
    2 5 4
    4 6 3
    5 3 8
    예상 출력
    15
  2. 예제 2

    입력
    3 2 1 1
    1 1 1
    1 2 5
    2 3 5
    예상 출력
    Impossible