Дима — системный администратор в университете. Сейчас он разбирается с крупной проблемой — некоторые из компьютеров в дисплейных классах дружественной университету школы заражены компьютерным вирусом. Антивирусное ПО не помогает — вирус слишком свежий...

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

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

Формат ввода
Входные данные состоят из нескольких (не более 30) тестовых примеров.

Первая строка каждого тестового примера содержит два целых числа N и M (0 < N ≤ 2 ⋅ 104, 0 ≤ M ≤ 2 ⋅ 104), где N — количество компьютеров в школьной сети и M — количество записей в логе о переданных пакетах данных.

В последующих M строках задаются пакеты, по одному на строку. Каждый пакет задаётся тремя целыми числами ti, si и di — временем отправки пакета, номером компьютера, с которого был отправлен пакет и номером компьютера, на который был отправлен пакет, соответственно (0 ≤ ti ≤ 109, 1 ≤ si, di ≤ N, si ≠ di, все ti попарно различны).

Компьютер, зараженный первым, имеет id 1.

Входные данные завершаются строкой с двумя нулями. Обрабатывать эту строку как тестовый пример не требуется.

Гарантируется, что объём входных данных не превосходит 5 мебибайт.

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

Пример
Ввод
3 2
1 1 2
2 2 3
3 2
2 3 2
1 2 1
0 0
Вывод
3
1
Please enter comments
Please enter your name.
Please enter the correct email address.
You must agree before submitting.

Answers & Comments


Copyright © 2024 SCHOLAR.TIPS - All rights reserved.