어디로 갈까?

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

요약
정점을 밟을 때마다 점수를 얻으며 최대 K번 이동하고 매 R번째 이동마다 W를 더 받을 때, 얻을 수 있는 점수 합의 최댓값을 구한다.
난이도

보통10점 중 6점

유형
그래프, 그리디, 수학, 구현
정답자
아직 제출이 없습니다

문제

NN개의 정점과 MM개의 간선으로 이루어진 무방향 그래프가 있다. 이 그래프는 같은 정점을 연결하는 간선이 없고, 두 정점을 연결하는 간선이 최대 한 개다.

당신은 어떤 정점에서 출발해서 인접한 정점으로 최대 KK번 이동할 것이다. 물론, 아예 이동하지 않는 것도 가능하다. 당신의 목표는 점수의 합을 최대화하는 것이다. 점수는 다음 규칙에 따라 주어진다.

  • 초기 점수는 00이다.
  • vv번 정점으로 이동하면 점수 p_vp\_v를 받는다. (1≤v≤N)(1\leq v\leq N)
  • 매 RR번째 이동마다 WW점을 추가로 받는다.

점수의 합의 최댓값을 계산해 보자!

입력

첫 번째 줄에 5개의 정수 NN, MM, KK, RR, WW가 공백으로 구분되어 주어진다. (2≤N≤106;(2\leq N\leq10^6; 1≤M≤106;1\leq M\leq10^6; 1≤K,R≤1012;1\leq K,R\leq10^{12}; −1012≤W≤1012)-10^{12}\leq W\leq10^{12})

두 번째 줄부터 MM개의 줄에 걸쳐 간선에 대한 정보가 주어진다. 정보의 ii번째 줄은 ii번째 간선이 연결하는 두 정점을 의미하는 두 정수 a_ia\_i와 b_ib\_i가 공백으로 구분되어 주어진다. (1≤a_i,b_i≤N;(1\leq a\_i,b\_i\leq N; a_i≠b_i)a\_i\neq b\_i)

그다음 줄에는 NN개의 정수 p_1,p_2,⋯ ,p_Np\_1, p\_2, \cdots, p\_N가 공백으로 구분되어 주어진다. (−1012≤p_j≤1012)(-10^{12} \leq p\_j \leq 10^{12})

이동 횟수가 KK를 초과하지 않으면 어떻게 이동하더라도 점수의 합의 절댓값이 2×10182 \times 10^{18}을 넘지 않는 입력만이 주어진다.

출력

점수의 합의 최댓값을 출력한다.

예제1

  1. 예제 1

    입력
    3 3 100 10 -15
    1 2
    2 3
    3 1
    10 10 10
    
    예상 출력
    855