Кольца большого мегаполиса

Просмотр в формате PDF

Submit solution


Очки: 140
Ограничение по времени: 1.0s
Ограничение по памяти: 64M

Автор:
Problem types
Allowed languages
C++, Python

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

Городские аналитики разбивают всю систему на транспортные зоны.
Транспортной зоной считается максимальная группа узлов, внутри которой из любого узла можно, возможно за несколько переходов, добраться до некоторого кольцевого маршрута этой же зоны, а все узлы, ведущие к одному и тому же кольцу, относятся к одной зоне.

Иначе говоря, если рассматривать узлы как вершины ориентированного графа, где из каждой вершины выходит ровно одно ребро, то каждая транспортная зона соответствует одной связной части этого графа, если забыть направления переходов.

Требуется определить, на сколько транспортных зон разбит мегаполис.

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

В первой строке содержится одно целое число (n) — количество транспортных узлов ((1 \le n \le 200000)).

Во второй строке содержатся (n) целых чисел (a_1, a_2, \dots, a_n), где (a_i) — номер узла, в который ведёт автопереход из узла (i) ((1 \le a_i \le n)).

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

Выведите одно целое число — количество транспортных зон в мегаполисе.

Ограничения

  • (1 \le n \le 200000)
  • Для каждого (i): (1 \le a_i \le n)
  • Из каждого узла выходит ровно один автопереход

Примеры

Пример 1

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

5
2 4 5 3 1

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

1
Пример 2

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

5
2 1 4 5 3

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

2

Комментарии

Еще нет ни одного комментария.