만드는 중입니다

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

만남의 장소

면접 대비

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

요약
가중치가 있는 도로망에서 P에서 X까지 최단 거리가 P에서 G까지 최단 거리의 두 배이고, 모든 최단 경로가 G를 지나는 교차로 X를 모두 찾습니다.
난이도

보통10점 중 6점

유형
최단 경로, 그래프, DFS
정답자
아직 제출이 없습니다

문제

페드로는 단체 활동을 무척 좋아해서, 모임 장소까지 아주 빠르게 달려간다. 그래서 도착하기 전에 지쳐 버린다.

어느 날 이 현상을 조사해 보니, 그는 늘 이동 경로의 정확히 중간 지점에서 지쳤다. 즉, 가야 할 거리의 절반을 이동했을 때 지친다.

도시에는 1번부터 NN번까지 번호가 붙은 교차로가 NN개 있고, 양방향 도로가 MM개 있다. 각 도로는 길이가 정해져 있으며 두 교차로를 잇는다. 도시의 어떤 두 교차로 사이에도 도로를 따라 가는 경로가 있다. 두 교차로 사이의 거리는 두 교차로를 잇는 최단 경로의 길이다.

페드로는 교차로 PP에 살고, 친구들은 오늘 늦게 교차로 GG에서 만나기로 했다. 페드로가 제시간에 도착하도록 다음과 같은 계획을 세웠다. 페드로에게 잘못된 모임 장소를 알려 주어서, 그가 정확히 GG에서 지치도록 만드는 것이다. 계획이 성립하려면, 교차로 GG가 페드로가 PP에서 잘못된 모임 장소까지 갈 수 있는 모든 경로에 포함되어야 한다. 그리고 그 경로마다 페드로가 정확히 GG에서 지쳐야 한다. 페드로는 계획을 잘 세우는 사람이라서 필요 이상으로 긴 경로는 택하지 않는다.

그렇다면 잘못된 모임 장소로 쓸 수 있는 교차로는 어디인가?

입력

첫 줄에 두 정수 NN (2≤N≤1052 \le N \le 10^5)과 MM (1≤M≤1051 \le M \le 10^5)이 주어진다. 각각 교차로의 수와 도로의 수다. 각 교차로는 11부터 NN까지의 서로 다른 정수로 구분된다.

둘째 줄에 두 정수 PP와 GG (1≤P,G≤N1 \le P, G \le N, P≠GP \ne G)가 주어진다. 페드로가 사는 교차로와 올바른 모임 장소다.

이어지는 MM개의 줄에는 도로 정보가 한 줄에 하나씩 주어진다. 세 정수 UU, VV, DD (1≤U,V≤N1 \le U, V \le N, U≠VU \ne V, 1≤D≤1091 \le D \le 10^9)는 교차로 UU와 VV를 잇는 길이 DD인 양방향 도로가 있다는 뜻이다.

주어진 도로로 모든 교차로 쌍 사이에 경로가 존재한다. 두 교차로를 잇는 도로는 최대 하나다.

출력

잘못된 모임 장소로 쓸 수 있는 교차로의 번호를 오름차순으로 한 줄에 출력한다. 그런 교차로가 없으면 문자 * (별표)를 출력한다.

예제4

  1. 예제 1

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

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

    입력
    3 2
    1 2
    1 2 100000
    2 3 99999
    
    예상 출력
    *
    
  4. 예제 4

    입력
    4 4
    4 3
    3 4 1
    4 1 1
    1 2 1
    2 3 1
    
    예상 출력
    *