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

마법 도로

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

의견: 0

설명

마법사의 나라에는 \(N\)개의 도시와 \(M\)개의 양방향 도로가 있다. 각 도로에는 이동 비용이 정수로 표시되어 있다.

당신은 도시 \(1\)에서 도시 \(N\)으로 이동하려 한다. 여행에 앞서 마법 업그레이드 를 최대 \(K\)번 사용할 수 있다. 마법 업그레이드를 적용한 도로를 지날 때는 이동 비용이 절반(정수 나누기)으로 줄어든다. 한 도로에는 업그레이드를 최대 한 번만 적용할 수 있다.

도시 \(1\)에서 도시 \(N\)까지의 최소 이동 비용을 구하여라. 경로가 없으면 \(-1\)을 출력한다.

제약
  • \(2 \le N \le 100\,000\)
  • \(1 \le M \le 200\,000\)
  • \(0 \le K \le 10\)
  • \(1 \le u, v \le N\), \(\;u \ne v\), \(\;1 \le w \le 10^6\)
입력 형식

첫째 줄에 도시 수 \(N\), 도로 수 \(M\), 마법 업그레이드 횟수 \(K\)가 공백으로 구분되어 주어진다.

다음 \(M\)개의 줄에 도로 정보 \(u\), \(v\), \(w\)가 공백으로 구분되어 주어진다 (양방향, 비용 \(w\)).

출력 형식

도시 \(1\)에서 도시 \(N\)까지의 최소 이동 비용을 출력한다. 경로가 없으면 \(-1\)을 출력한다.

예제 1
입력
3 3 1
1 2 10
2 3 2
1 3 100
출력
7
설명

업그레이드 \(1\)회 사용 가능. \(1 \to 2 \to 3\) 경로 비용은 \(10+2=12\)이다. 업그레이드를 \(1 \to 3\)에 쓰면 \(\lfloor 100/2 \rfloor = 50\)으로 더 비싸다. 정답은 \(12\)이다.

예제 2
입력
4 3 2
1 2 100
2 3 100
3 4 100
출력
200
설명

\(1 \to 2 \to 3 \to 4\)에서 업그레이드 \(2\)개를 앞 두 간선에 쓰면 \(50 + 50 + 100 = 200\)이다. 업그레이드 없이 \(300\)이므로 최적은 \(200\)이다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

마법 도로

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

Log in to rate problems.

개별 의견

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

풀이 제출

마법 도로

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