마법 다리
시간 제한8초메모리 제한256 MB
모든 마법 다리에 같은 길이를 정해 두 출발점에서 목표 지점까지 최단 거리의 차이를 가장 작게 만듭니다.
문제
어떤 마술사가 사는 나라는 섬 개와 다리 개로 이루어져 있다. 다리 가운데 일부는 마술사가 만든 마법 다리다. 마술사는 마법을 부려 모든 마법 다리의 길이를 동시에 똑같은 값으로 바꿀 수 있고, 그 값은 음이 아닌 정수여야 한다.
이 나라에는 두 사람이 겨루는 유명한 경주 경기가 있다. 1번 선수는 섬 에서, 2번 선수는 섬 에서 출발한다. 섬 에 먼저 도착한 쪽이 이긴다.
마술사는 이 경기를 즐겨 본다. 그래서 경기가 가장 팽팽해지도록, 에서 까지의 최단 거리와 에서 까지의 최단 거리의 차이가 가장 작아지게 마법 다리의 길이를 정한다. 섬 안에서의 이동은 계산하지 않는다.
이 차이를 얼마나 줄일 수 있는지 구하라.
마술사는 경기가 시작하기 전에 길이를 한 번만 정하고, 경기 도중에는 바꾸지 않는다. 모든 마법 다리의 길이는 서로 같다. 다리는 어느 방향으로든 건널 수 있다.
입력
입력은 여러 개의 데이터 세트로 이루어진다. 각 데이터 세트의 형식은 다음과 같다. 입력에 등장하는 수는 모두 정수다.
N M S1 S2 T
a1 b1 w1
a2 b2 w2
...
aM bM wM
는 다리 가 섬 와 섬 를 잇는다는 뜻이다.
는 음이 아닌 정수이거나 문자 x다. 가 정수면 다리 는 보통 다리이고 길이가 다. 가 x면 다리 는 마법 다리다.
- , , 는 서로 다르다.
- 보통 다리 는
- 마법 다리의 개수는 100 이하다.
- 는 에서도 에서도 갈 수 있다.
마지막 데이터 세트 다음 줄에는 공백 하나로 구분한 0이 다섯 개 주어진다. 이 줄은 입력의 끝을 뜻하며, 처리하지 않는다.
출력
데이터 세트마다 두 최단 거리 차이의 최솟값을 한 줄에 출력한다.