Системный инженер
Боб — опытный системный инженер, который регулярно сталкивается с непростыми задачами. Сейчас перед ним стоит новая задача: управлять набором серверов с различными возможностями для обработки запросов на выполнение задач от постоянных источников. Эти задачи необходимо обрабатывать в течение длительного или неопределенного времени. Последовательность постоянных запросов на выполнение задач поступает, указывая подмножество серверов, которые могут их обработать. Каждая задача обрабатывается на одном сервере, и каждый сервер может обрабатывать только одну задачу одновременно. Боб должен распределить максимальное количество задач по серверам. Например, если есть 2 задачи j1 и j2 и 2 сервера s1 и s2, при этом задача j1 требует сервер s1, а задача 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.