Олимпиадный тренинг

Задача . D. Технология мистера Китаюта


Королевство Шусеки — ведущая мировая нация в области инноваций и технологий. В королевстве есть n городов, пронумерованных от 1 до n.

Благодаря исследованию мистера Китаюты, наконец-то стало возможно сооружать телепортационные туннели между двумя городами. Телепортационный туннель соединяет два города в одном направлении, то есть, телепортационный туннель из города x в город y не может доставить из города y в город x. Можно последовательно путешествовать по нескольким туннелям, например, если построить туннель из города x в город y, а также туннель из города y в город z, то можно мгновенно путешествовать из города x в город z.

Мистер Китаюта также занимается национальной политикой. Он считает, что наличие транспорта между m парами городов (ai, bi) (1 ≤ i ≤ m) очень важно. Он планирует соорудить телепортационные туннели так, чтобы для каждой важной пары (ai, bi) было возможно пропутешествовать из города ai в город bi по одному или более телепортационным туннелям (при этом необязательно, чтобы из города bi можно было добраться в город ai). Найдите минимальное количество телепортационных туннелей, которые необходимо построить. Пока что между городами не построили ни одного телепортационного туннеля, а другого эффективного междугороднего транспорта нет.

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

В первой строке записано два целых числа через пробел, n и m (2 ≤ n ≤ 105, 1 ≤ m ≤ 105), обозначающих количество городов в королевстве Шусеки и количество важных пар, соответственно.

В следующих m строках описаны важные пары. В i-й из них (1 ≤ i ≤ m) записано два целых числа через пробел, ai и bi (1 ≤ ai, bi ≤ n, ai ≠ bi), обозначающих, что должно быть возможно путешествовать из города ai в город bi через один или более телепортационных туннелей. Гарантируется, что все пары (ai, bi) различны.

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

Выведите минимальное требуемое количество телепортационных туннелей для выполнения цели мистера Китаюты.

Примечание

В первом примере один из оптимальных способов построить туннели показан на рисунке ниже:

Для второго примера один из оптимальных способов указан ниже:


Примеры
Входные данныеВыходные данные
1 4 5
1 2
1 3
1 4
2 3
2 4
3
2 4 6
1 2
1 4
2 3
2 4
3 2
3 4
4

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w642
Комментарий учителя