QOJ.ac

QOJ

Límite de tiempo: 10 s Límite de memoria: 256 MB Puntuación total: 100

#23837. 택시

Estadísticas

IOI 나라는 마을 $1$부터 마을 $N$까지의 $N$개의 마을로 이루어져 있으며, 마을과 마을은 도로로 연결되어 있다. IOI 나라에는 $K$개의 도로가 있으며, 모든 도로는 서로 다른 $2$개의 마을을 연결하고 있다. 자동차는 도로를 양방향으로 자유롭게 이동할 수 있지만, 도로 이외의 곳을 통해 어떤 마을에서 다른 마을로 갈 수는 없다.

IOI 나라의 마을 $1$에 사는 JOI 군은 마을 $N$에 사는 할머니 댁까지 택시를 타고 가기로 했다. IOI 나라에는 택시 회사 $1$부터 택시 회사 $N$까지의 $N$개의 택시 회사가 있다. IOI 나라의 택시 회사에는 다음과 같은 다소 특수한 규칙이 있다.

  • 택시 회사 $i$의 택시는 마을 $i$에서만 탑승할 수 있다.
  • 택시 회사 $i$의 택시 요금은 이용한 거리에 상관없이 $C_i$이다.
  • 택시 회사 $i$의 택시는 탑승한 후 연속해서 최대 $R_i$개의 도로만 지날 수 있다.

예를 들어 $R_1 = 2$인 경우, 마을 $1$에서 택시 회사 $1$의 택시에 탑승하면 최대 $2$개의 도로만 지날 수 있으므로, 도로를 $3$개 이상 지나기 위해서는 도중의 마을에서 택시를 갈아타야 한다.

JOI 군은 마을 이외의 지점에서 택시를 타거나 택시에서 내릴 수 없다. 또한 택시 이외의 이동 수단을 이용할 수도 없다. JOI 군이 마을 $N$에 도달하기 위해 필요한 요금의 합계의 최솟값을 구하는 프로그램을 작성하라.

입력

입력은 $1 + N + K$줄로 이루어진다.

$1$번째 줄에는 $2$개의 정수 $N, K$ ($2 \le N \le 5000$, $N - 1 \le K \le 10000$)가 공백으로 구분되어 적혀 있다. 이는 IOI 나라가 $N$개의 마을로 이루어져 있으며, IOI 나라의 도로의 개수가 $K$개임을 나타낸다.

이어지는 $N$개의 줄 중 $i$번째 줄($1 \le i \le N$)에는 $2$개의 정수 $C_i, R_i$ ($1 \le C_i \le 10000$, $1 \le R_i \le N$)가 공백으로 구분되어 적혀 있다. 이는 택시 회사 $i$의 택시 요금이 $C_i$이고, 탑승한 후 연속해서 최대 $R_i$개의 도로만 지날 수 있음을 나타낸다.

이어지는 $K$개의 줄 중 $j$번째 줄($1 \le j \le K$)에는 서로 다른 $2$개의 정수 $A_j, B_j$ ($1 \le A_j < B_j \le N$)가 공백으로 구분되어 적혀 있다. 이는 마을 $A_j$와 마을 $B_j$ 사이에 도로가 존재함을 나타낸다. 같은 $(A_j, B_j)$ 쌍이 $2$번 이상 적혀 있는 경우는 없다.

주어지는 입력 데이터에서는 어떤 마을에서 다른 어떤 마을로도 택시를 갈아타며 갈 수 있음이 보장되어 있다.

출력

JOI 군이 마을 $1$에서 마을 $N$까지 가는 데 필요한 요금의 합계의 최솟값을 나타내는 정수를 $1$줄로 출력하라.

예제

예제 입력 1

6 6
400 2
200 1
600 3
1000 1
300 5
700 4
1 2
2 3
3 6
4 6
1 5
2 4

예제 출력 1

700

참고

위의 입출력 예제는 아래 그림에 대응한다. 원은 마을을, 선은 도로를 나타낸다.

problem_23837_b3dd4c3dc8bcd7ab77787ca591951f69.png

이 예제에서 JOI 군이 최소 요금으로 마을 $6$에 도달하려면 다음과 같이 한다.

  • 마을 $1$에서 택시를 타고 마을 $5$로 간다. (요금 $400$)
  • 마을 $5$에서 택시를 타고 마을 $6$으로 간다. (요금 $300$)

JOI 군이 이러한 경로를 지났을 때의 요금의 합계는 $400 + 300 = 700$이므로, $700$을 출력한다.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.