Задача #0177

Память 128 MB Время 2500 ms Сложность 80 %
14
Автор: Sirojiddin

  

Супер билеты

На день рождения Шермат получил автобусные билеты. Сначала ему было грустно из-за этого, но он удивился, когда понял, что билеты не простые, а супер билеты. На данный момент у него есть \(m\) супер-билетов, и они делятся на три типа:
1. С этим билетом он может перейти от остановки \(a\) к остановке \(b\).
2. С этим билетом он может перейти от остановки \(a\) к любой остановке в диапазоне \([l, r]\).
3. С этим билетом он может перейти от любой остановки в диапазоне \([l, r]\) к остановке \(a\).

Для каждого билета указано время, необходимое для проезда.Всего \(n\) остановок, и Шермат стоит на остановке \(s\). Шермат хочет знать, наименьшее количество времени, необходимое для перехода от остановки \(s\) ко всем другим возможным остановкам. Расписание автобусов настолько плотное, что можно считать, что на пересадку автобуса на остановке не требуется времени.


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

Первая строка ввода содержит три целых числа \(n\), \(m\) и \(s\) - количество остановок, количество билетов и индекс остановки Шермата \((1 ≤ n, m ≤ 10^5, 1 ≤ s ≤ n)\). В следующих \(m\) строках даны билеты:

  • \(1 \space a \space b \space t\) - это билет типа 1, по нему можно перейти от остановки \(a\) до остановки \(b\) за время \(t\).
  • \(2 \space a \space l \space r \space t\) - это билет типа 2, с этим билетом можно перейти от остановки \(a\) к любой остановке в диапазоне \([l, r]\).
  • \(3 \space a \space l \space r \space t\) - это билет типа 3, с этим билетом можно перейти с любой остановки в диапазоне \([l, r]\) до остановки \(a\).

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

Выведите \(n\) чисел, \(i\)-е из них должно быть равно минимальному времени, которое потребуется, чтобы пройти от остановки \(s\) до остановки \(i\), если невозможно перейти к остановке \(i\), выведите \(-1\).


Примеры
# input.txt output.txt
1
3 5 1
2 3 2 3 17
2 3 2 2 16
2 2 2 3 3
3 3 1 1 12
1 3 3 17
0 28 12 
Отправить решение
Пожалуйста, войдите в систему, чтобы выполнить это действие,если у вас нет учетной записи, вы можете зарегистрироваться в любое время