세계의 빅맥

시간 제한2초메모리 제한128 MB

요약
국가 A에서 B로 가는 환율 곱의 최솟값을 구하고, 순환이 값을 임의로 작게 만드는 경우 0을 출력한다.
난이도

보통10점 중 7점

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

문제

베시(Bessie)는 소 대학(cowllege)에서 가장 좋아하는 과목인 거시경제학을 공부하고 있다. 졸업 과제로 그녀는 전 세계 국가 간 환율에 대한 연구를 발표하려고 한다.

발표를 더 생동감 있게 만들기 위해, 베시는 세계 여러 나라의 빅맥 상대 가격을 보여주고 싶어 한다. 어떤 시작 국가에서의 빅맥 가격과, 한 나라의 통화를 다른 나라의 통화로 환전하는 환율 목록이 주어졌을 때, 목표 국가에서 얻을 수 있는 가장 낮은 빅맥 가격을 구하는 상황을 생각해 보자. 예를 들어:

  • 미국에서 빅맥은 60 USD의 가치가 있다.
  • USD에서 CAD로의 환율은 1 USD당 0.2 CAD이다.
  • USD에서 GBP로의 환율은 1 USD당 5.00 GBP이다.
  • GBP에서 CAD로의 환율은 1 GBP당 0.5 CAD이다.
  • CAD에서 USD로의 환율은 1 CAD당 5.00 USD이다.

베시는 여러 번의 환전을 거쳐 도달할 수 있는, 캐나다에서의 가장 낮은 빅맥 가격을 알고 싶다. 경로는 두 가지가 있다:

  • USD에서 CAD로 바로 환전: 60.00 USD × 0.2 CAD/USD = 12.00 CAD.
  • USD에서 GBP를 거쳐 CAD로 환전: 60.00 USD × 5.00 GBP/USD × 0.5 CAD/GBP = 150.00 CAD.

베시는 150.00 CAD 대신 12.00 CAD를 내는 첫 번째 경로를 택할 것이다.

베시에게는 11부터 NN까지 번호가 붙은 NN개의 국가(1≤N≤20001 \le N \le 2000)와, 각각 국가 ii에서 국가 jj로 향하는 환율 eije_{ij}(0.1<eij≤100.1 < e_{ij} \le 10)의 목록 MM개(1≤M≤250001 \le M \le 25000)가 주어진다(1≤i≤N1 \le i \le N; 1≤j≤N1 \le j \le N). 국가 ii에서 국가 jj로 환전하면 현재 가치에 eije_{ij}가 곱해진다.

시작 국가 AA(1≤A≤N1 \le A \le N)에서의 빅맥 가치 VV(1≤V≤10121 \le V \le 10^{12}, 정수가 아닐 수도 있음)가 주어질 때, 여러 번의 환전을 거친 뒤 국가 BB(1≤B≤N1 \le B \le N; B≠AB \ne A)에서 얻을 수 있는 가장 낮은 빅맥 가치를 구하라. 최솟값이 존재하지 않으면(가치를 얼마든지 작게 만들 수 있으면) 0을 출력한다.

정답이 0이 아니라면 1 이상 101510^{15} 이하임이 보장된다. 또한 어떤 나라의 통화에서든 다른 어떤 나라의 통화로도 도달할 수 있음이 보장된다.

입력

  • 첫째 줄: 공백으로 구분된 다섯 개의 수 NN, MM, VV, AA, BB.
  • 둘째 줄부터 M+1M+1번째 줄까지: 하나의 환율을 나타내는, 공백으로 구분된 세 개의 수 ii, jj, eije_{ij}.

출력

  • 국가 BB에서 얻을 수 있는 가장 낮은 빅맥 가치를 소수점 아래 둘째 자리까지 반올림하여(0.5는 올림, round half up) 출력한다. 최솟값이 존재하지 않으면 0 하나만 출력한다.

예제2

  1. 예제 1

    입력
    3 4 60 1 2
    1 2 0.2
    1 3 5
    3 2 0.5
    2 1 5
    
    예상 출력
    12.00
    
  2. 예제 2

    입력
    2 2 100 1 2
    1 2 0.5
    2 1 0.5
    
    예상 출력
    0