RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R01518

환전소 차익 사이클 탐지

Gold II 골드 II
난이도
2s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

도시에는 \(N\) 가지 통화가 유통되고 있고, 곳곳에 환전소가 있다. 각 환전소는 어떤 통화 \(a\) 를 다른 통화 \(b\) 로 바꿔 주며, 그 환율 \(r\)통화 \(a\) 한 단위를 통화 \(b\) \(r\) 단위로 바꿔 준다는 뜻이다. 수수료는 없다고 가정한다.

영리한 투자자는 어떤 통화에서 출발해 여러 환전소를 거쳐 다시 그 통화로 돌아왔을 때 처음보다 더 많은 돈을 손에 쥘 수 있는지를 궁금해한다. 그런 환전 경로(닫힌 순환)를 차익 사이클(arbitrage cycle) 이라고 부른다. 즉, 통화들의 순환 \(c_1 \to c_2 \to \cdots \to c_k \to c_1\) 을 따라간 환율의 곱이 \(1\) 보다 크면 차익 사이클이다.

환율표가 주어질 때, 차익 사이클이 하나라도 존재하는지 판정하는 프로그램을 작성하라.

예를 들어 통화가 \(3\) 개이고 \(1 \to 2\)\(1.20\), \(2 \to 3\)\(0.90\), \(3 \to 1\)\(1.10\) 이라면 \(1 \to 2 \to 3 \to 1\) 을 따라간 곱이 \(1.20 \times 0.90 \times 1.10 = 1.188 > 1\) 이므로 차익 사이클이 존재한다.

제약

\(1 \le N \le 400\)

\(0 \le M \le 5000\)

\(1 \le a, b \le N\), \(a \neq b\)

\(0.01 \le r \le 100.00\) (소수점 아래 둘째 자리까지)

입력 형식

첫째 줄에 통화의 수 \(N\) 과 환전소(방향이 있는 환율)의 수 \(M\) 이 공백으로 구분되어 주어진다.

다음 \(M\) 개의 줄에는 각각 세 값 \(a\), \(b\), \(r\) 이 주어진다. 이는 통화 \(a\) 한 단위를 통화 \(b\) \(r\) 단위로 바꿔 주는 환전소가 있다는 뜻이다. \(r\) 은 소수점 아래 둘째 자리까지 주어지는 양의 실수이다.

같은 \((a, b)\) 순서쌍에 대해 서로 다른 환율을 가진 환전소가 여러 개 있을 수 있으며, 이때는 그중 어느 것이든 골라 쓸 수 있다.

출력 형식

차익 사이클이 하나라도 존재하면 YES, 그렇지 않으면 NO 를 한 줄에 출력한다.

예제 1
입력
3 3
1 2 1.20
2 3 0.90
3 1 1.10
출력
YES
설명

1번 통화 → 2번 통화 → 3번 통화 → 1번 통화로 환전하면 \(1.20 \times 0.90 \times 1.10 = 1.188\) 배가 되어, 시작했을 때보다 많은 돈을 얻을 수 있다. 따라서 차익 사이클이 존재하므로 YES.

예제 2
입력
2 2
1 2 2.00
2 1 0.40
출력
NO
설명

1번 → 2번 → 1번 환전은 \(2.00 \times 0.40 = 0.80\) 배로 오히려 손해이며, 다른 사이클도 없으므로 차익을 낼 수 없다. NO.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

환전소 차익 사이클 탐지

개요
출제자 난이도 Gold II 골드 II 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

환전소 차익 사이클 탐지

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8