eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Устаревший код

Устаревший код

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

Ваше программное обеспечение разделено на пакеты и выполняемые файлы. Пакет - это набор методов. Выполняемые файлы - это пакеты, определяющие среди других методов только один метод с именем PROGRAM. Этот метод выполняется при запуске соответствующего выполняемого файла. Обычные пакеты не имеют метода с именем PROGRAM.

Каждый метод уникально идентифицируется комбинацией имен пакета и метода. Например. метод с идентификатором SuperGame::PROGRAM будет основным методом исполняемой SuperGame.

Для каждого метода в программном обеспечении Вам предоставляется список методов, непосредственно вызывающих его. Таким образом, Вы можете легко идентифицировать методы, которые никогда не вызываются из любого метода. Однако Ваша задача посложнее: необходимо найти неиспользуемые методы. Это методы, которые никогда не достигаются потоком управления какого-либо исполняемого файла в Вашем программном обеспечении.

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

Первая строка содержит целое число n (1n400) - количество методов в программном обеспечении.

Каждый метод описывается двумя строками, всего в 2 * n строках. Первая строка состоит из уникального идентификатора метода и ki (0kin) - количества методов, непосредственно вызывающих этот метод. Вторая строка состоит из набора идентификаторов ki этих вызывающих методов или пуста, если таких методов нет, то есть ki = 0.

Идентификаторы метода состоят из имени пакета, за которым следует два двоеточия и имя метода, например Packagename::Methodname. Обе строки, пакет и имя метода содержат до 20 строчных, прописных символов или цифр (a-z, A-Z, 0-9).

Во входных данных будет указано ровно n различных идентификаторов методов.

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

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

Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
2
SuperGame::PROGRAM 0

HelpPackage::HelpFunction 2
HelpPackage::HelpFunction SuperGame::PROGRAM
Выходные данные #1
0
Входные данные #2
2
Loop::CallA 1
Loop::CallB
Loop::CallB 1
Loop::CallA
Выходные данные #2
2
Источник 2015 German Collegiate Programming Contest (GCPC), June 20, Problem H