Інженер систем
Боб — досвідчений системний інженер, який завжди стикається з новими викликами. Наразі він має вирішити задачу з управління набором серверів, кожен з яких має різні можливості для обробки запитів на завдання від постійних джерел. Ці завдання потребують обробки протягом тривалого або невизначеного періоду часу. До Боба надходить послідовність запитів на постійні завдання, кожен з яких вказує на підмножину серверів, здатних обслуговувати цей запит. Кожне завдання може бути оброблене лише на одному сервері, і кожен сервер може обробляти лише одне завдання одночасно. Бобу потрібно розпланувати максимальну кількість завдань на доступних серверах. Наприклад, якщо є 2 завдання j1, j2 і 2 сервери s1, s2, і обидва завдання j1 та j2 вимагають сервер s1, то Боб може розпланувати лише одне з цих завдань. Чи можете ви йому допомогти?
У загальному випадку є n завдань, пронумерованих від 0 до n-1, і n серверів, пронумерованих від n до 2*n-1. Завдання полягає в тому, щоб знайти максимальну кількість завдань, які можуть бути оброблені.
Вхідні дані програми надходять з текстового файлу (не більше 1 МБ). Кожен набір даних у файлі представляє певний набір завдань. Набір даних починається з числа n (n <= 10000) завдань, за яким слідує список необхідних серверів для кожного завдання у форматі: номер_завдання: (кількість_серверів) s_1 … s_{кількість_серверів}. Програма повинна вивести максимальну кількість завдань, які можуть бути оброблені.
Пробіли можуть вільно зустрічатися у вхідних даних. Вхідні дані є коректними і завершуються кінцем файлу. Для кожного набору даних програма виводить результат на стандартний вихід з початку рядка. Зразок вхідних/вихідних даних наведено в таблиці нижче. Є два набори даних. У першому випадку кількість завдань n дорівнює 2, пронумерованих 0 і 1. Послідовність запитів для завдання 0: 0: (1) 2, що означає, що завдання 0 вимагає 1 сервер, сервер під номером 2. Послідовність запитів для завдання 1: 1: (1) 2, що означає, що завдання 1 вимагає 1 сервер, сервер під номером 2. Результат для набору даних — це довжина максимальної кількості розпланованих завдань, 1.