QOJ.ac

QOJ

実行時間制限: 10 s メモリ制限: 256 MB 満点: 100

#23837. Такси

統計

Страна IOI состоит из $N$ городов, пронумерованных от города $1$ до города $N$, которые соединены между собой дорогами. В стране IOI есть $K$ дорог, и каждая дорога соединяет $2$ различных города. Машины могут свободно передвигаться по дорогам в обоих направлениях, но попасть из одного города в другой вне дорог невозможно.

JOI-кун, живущий в городе $1$ страны IOI, решил поехать на такси к своей бабушке, которая живёт в городе $N$. В стране IOI есть $N$ таксомоторных компаний — от компании $1$ до компании $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$.

В $i$-й строке ($1 \le i \le N$) из следующих $N$ строк через пробел записаны $2$ целых числа $C_i, R_i$ ($1 \le C_i \le 10000$, $1 \le R_i \le N$). Это означает, что стоимость проезда на такси компании $i$ равна $C_i$, а после посадки оно может проехать подряд максимум по $R_i$ дорогам.

В $j$-й строке ($1 \le j \le K$) из следующих $K$ строк через пробел записаны $2$ различных целых числа $A_j, B_j$ ($1 \le A_j < B_j \le N$). Это означает, что между городом $A_j$ и городом $B_j$ есть дорога. Одна и та же пара $(A_j, B_j)$ не встречается $2$ или более раз.

В заданных входных данных гарантируется, что из любого города можно добраться до любого другого города, пересаживаясь с одного такси на другое.

Выходные данные

Выведите в $1$ строке целое число — минимальную общую стоимость проезда, необходимую JOI-куну, чтобы добраться из города $1$ в город $N$.

Примеры

Входные данные 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

Чтобы в этом примере добраться до города $6$ с минимальной стоимостью, JOI-кун поступает следующим образом:

  • Садится в такси в городе $1$ и едет в город $5$. (Стоимость $400$)
  • Садится в такси в городе $5$ и едет в город $6$. (Стоимость $300$)

Поскольку общая стоимость проезда по такому маршруту равна $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.