EduBrick

D. Цикл через заданную вершину

3000 мс · 256 МБ · всё или ничего

Определите, проходит ли через вершину vv хотя бы один цикл отрицательного веса.

Обычный Форд — Беллман отвечает лишь на вопрос «есть ли отрицательный цикл где-нибудь», и через vv он проходить не обязан. Нужна динамика по числу рёбер — та же, что в классной задаче O.

Пусть fk[i][j]f_k[i][j] — наименьший вес маршрута ровно из kk рёбер. Тогда через vv проходит отрицательный цикл тогда и только тогда, когда fk[v][v]<0f_k[v][v] < 0 для какого-нибудь kk от 1 до nn.

Больше nn рёбер перебирать незачем: если замкнутый маршрут отрицательного веса через vv существует, то существует и такой, где вершины не повторяются, а значит рёбер в нём не больше nn.

Стоит это O(n4)O(n^4), что при n≤60n \le 60 вполне посильно.

Формат ввода

Первая строка содержит числа nn (1≤n≤601 \le n \le 60), mm (0≤m≤20000 \le m \le 2000) и vv.

Далее идут mm строк с рёбрами: начало, конец и вес (∣w∣≤1000|w| \le 1000). Возможны кратные рёбра и петли.

Формат вывода

Одно слово: YES или NO.

Примеры

ввод
3 3 1
1 2 1
2 3 1
3 1 -3
вывод
YES
ввод
3 3 1
2 3 -5
3 2 1
1 2 1
вывод
NO
Войдите, чтобы отправлять решения.