Ai+AjA_i+A_j

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

요약
S에서 T로 가는 어떤 최단 경로 위에 함께 놓이는 서로 다른 두 정점 i, j에 대해 A_i + A_j의 최솟값을 구한다.
난이도

어려움10점 중 8점

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

문제

11번부터 NN번 정점까지 총 NN개의 정점과 MM개의 가중치가 있는 단방향 간선으로 이루어진 그래프가 주어진다. 다음 조건을 만족하는 정수 쌍 (i,j)(i,j) 중에서 A_i+A_jA\_i +A\_j의 최솟값을 구해보자.

  • 1≤i<j≤N1\leq i \lt j \leq N
  • SS에서 출발하고 TT에 도착하는 최단 경로 중에서, ii번 정점과 jj번 정점을 동시에 지나는 경우가 존재한다.

SS에서 출발하고 TT에 도달하는 최단 경로는 하나가 아닐 수도 있음에 유의하자. 심지어 존재하지 않을 수도 있다.

최단 경로가 존재하지 않거나 조건을 만족하는 정수 쌍 (i,j)(i,j)가 존재하지 않는 경우에는 -1을 출력하자.

입력

첫째 줄에 정점의 개수를 나타내는 정수 NN과 간선의 개수를 나타내는 정수 MM이 공백을 사이에 두고 주어진다. (2≤N,M≤106)(2 \leq N, M \leq 10^6)

둘째 줄에 정수로 이루어진 수열 A_1,A_2,…,A_NA\_1, A\_2, \dots, A\_N이 공백을 사이에 두고 주어진다. (1≤A_i≤106)(1 \leq A\_i \leq 10^6)

셋째 줄에 출발 정점의 번호 SS와 도착 정점의 번호 TT가 공백을 사이에 두고 주어진다. (1≤S,T≤N,S≠T)(1\leq S, T \leq N, S \neq T)

넷째 줄부터 MM개의 줄에 걸쳐 간선을 나타내는 세 정수 uu, vv, cc가 공백을 사이에 두고 주어진다. (1≤u,v≤N,u≠v,1≤c≤106)(1 \leq u, v \leq N, u \neq v, 1 \leq c \leq 10^6)

이는 uu번 정점에서 출발해 vv번 정점에 도달하는 거리 cc의 단방향 간선을 의미한다.

출력

최단 경로가 존재하지 않거나 조건을 만족하는 정수 쌍 (i,j)(i,j)가 존재하지 않는다면 첫째 줄에 -1을 출력한다.

존재한다면, 첫째 줄에 정답을 출력한다.

예제2

  1. 예제 1

    입력
    4 4
    1 2 4 8
    1 4
    1 2 1
    1 3 2
    2 4 3
    3 4 2
    
    예상 출력
    3
    
  2. 예제 2

    입력
    3 2
    1 2 3
    1 3
    1 2 2
    2 1 3
    
    예상 출력
    -1