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

Задача . Visits


Задача

Темы:
У Беси есть \(N\) (\(2\le N\le 10^5\)) приятелей - быков, последовательно пронумерованных \(1\ldots N\). Для каждого \(1\le i\le N\), бык \(i\) хочет посетить быка \(a_i\) (\(a_i\neq i\)).

Задана перестановка \((p_1,p_2,\ldots, p_N)\) из \(1\ldots N\), указывающая как произошли посещения.

Для каждого \(i\) от \(1\) до \(N\):

  • Если бык \(a_{p_i}\) уже ушёл со своей фермы, то бык \(p_i\) остаётся на своей ферме.
  • Иначе бык \(p_i\) уходит со своей фермы на ферму \(a_{p_i}\). Этот визит завершается радостным "moo" произнесённым \(v_{p_i}\) раз (\(0\le v_{p_i}\le 10^9\)).

Вычислите максимально возможное количество "moo" после всех визитов по всем возможным перестановкам \(p\).

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит число \(N\).

Для каждого \(1\le i\le N\), \(i+1\)-ая строка содержит два разделённых пробелом целых числа \(a_i\) и \(v_i\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Одно целое число - ответ.

Заметим, что при вычислениях может потребоваться использование 64-битного типа целых чисел (например, long long в C++).


Примеры
Входные данныеВыходные данные
1 4
2 10
3 20
4 30
1 40
90

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

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