병사, 잘 들어라.
특별한 임무가 있다. 적의 기지를 찾아냈으니 폭파해야 한다. 지도와 기지를 날려 버릴 만큼 충분한 폭탄을 지급한다. 작전이 끝나면 근처 숲에서 헬리콥터가 대기한다.
쉬워 보이는가? 목표를 이루는 가장 빠른 경로를 찾되, 같은 장소를 두 번 지나서는 안 된다. 두 번 지나면 발각된다.
질문 있나? 좋다. 10분 뒤에 출발이니 준비하라.
행운을 빈다. 죽지 말고, 저녁 식사 때 보자.
무향 그래프와 서로 다른 세 정점이 주어진다. 세 정점은 각각 아군 기지, 적 기지, 헬리콥터가 대기하는 장소다. 아군 기지에서 헬리콥터가 있는 장소까지 가는 가장 짧은 경로를 찾아라. 경로는 적 기지를 반드시 지나야 하고, 어떤 정점도 두 번 방문하지 않아야 한다.
첫째 줄에 정수 N, M, B, E, H가 공백으로 구분되어 주어진다.
그래프의 정점에는 1번부터 N번까지 번호가 붙어 있다. 아군 기지는 B번 정점, 적 기지는 E번 정점에 있고, 헬리콥터는 H번 정점에서 대기한다. 1≤B,E,H≤N이고 B, E, H는 서로 다르다.
다음 M개 줄에 간선의 정보가 주어진다. 각 줄에는 정수 v, w, t가 공백으로 구분되어 주어진다 (1≤v,w≤N, v=w, 1≤t≤1000000). 정점 v와 정점 w를 잇는 무향 간선이 있고, 이 간선을 지나는 데 시간 t가 든다는 뜻이다.
두 정점을 잇는 간선은 많아야 하나다.
3≤N≤1000, 0≤M≤1000이다.
임무를 완수하는 데 필요한 최소 시간을 정수 하나로 한 줄에 출력한다. 임무를 완수할 수 없으면 대신 -1을 출력한다.