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

Доверительные группы

Доверительные группы

В отделе кадров Ассоциации Сладких Монстров (AСM) заметили, что продуктивность различных рабочих групп в компании не так хороша, как могла бы быть. Они взяли интервью у сотрудников проблемных групп и обнаружили корень проблемы: доверие (или вернее сказать отсутствие ее). Некоторые сотрудники не доверяют остальным членам группы, что уменьшает их мотивацию и счастье. Отдел кадров хочет решить эту проблему, реорганизовав группы так, чтобы они стали \textit{стабильными}, то есть состояли из людей, которые доверяют друг другу. С сотрудниками была проведена беседа, после чего было установлено, кому непосредственно доверяет каждый из них. Более того, если сотрудник \textbf{A} доверяет сотруднику \textbf{B}, а сотрудник \textbf{B} доверяет сотруднику \textbf{C}, то сотрудник \textbf{A} будет доверять \textbf{C}. Очевидно также, что каждый из сотрудников доверяет самому себе. В отделе кадров хотят создать наименьшее количество групп людей так, чтобы уменьшить расходы на администрирование (они и сами не хотят тяжело работать). По заданной информации Вам следует написать программу, которая найдет наименьшее количество стабильных групп, которое можно создать. \InputFile Входные данные состоят из нескольких тестов. Каждый тест начинается со строки, содержащей два натуральных числа \textbf{P} и \textbf{T} (\textbf{1} ≤ \textbf{P} ≤ \textbf{1000},\textbf{ 0} ≤ \textbf{T} ≤ \textbf{999000}). Каждая из следующих \textbf{P} строк содержит имя одного человека. Имена имеют следующий формат: фамилия, запятая, пробел, первое имя (например McBride, John или Smith, Peter). Фамилия и первое имя являются строками, содержащих буквы верхнего и нижнего регистра (без пробелов и знаков пунктуации), и имеющих длину не более \textbf{10} символов. Повторов полных имен людей не существует. За именами следуют \textbf{T} блоков по \textbf{2} строки, представляющих собой доверительные отношения между людьми. Каждая строка блока содержит имя человека в таком же формате, как было указано ранее. Каждый блок означает, что человек в первой строке доверяет человеку во второй строке. Все люди, находящиеся в доверительных отношениях, перечислены в предыдущем списке из \textbf{P} человек. Входные данные завершаются тестом-"фантомом" \textbf{0 0}, который обрабатывать не следует. \OutputFile Для каждого теста вывести строку, содержащую наименьшее количество стабильных групп людей, которое можно сформировать.
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
3 2
McBride, John
Smith, Peter
Brown, Anna
Brown, Anna
Smith, Peter
Smith, Peter
Brown, Anna
3 2
McBride, John
Smith, Peter
Brown, Anna
Brown, Anna
Smith, Peter
McBride, John
Smith, Peter
0 0
Выходные данные #1
2
3