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

База данных

База данных

На предприятии работает \textbf{N} сотрудников. Между ними существует \textbf{M} связей "начальник-подчиненный". У сотрудника может быть несколько начальников и подчиненных. Не существует последовательности связей "начальник-подчиненный", которая начинается и заканчивается одним и тем же сотрудником. Доступ к корпоративной базе данных регулируется системой прав. В каждый момент времени для каждого сотрудника однозначно известно: имеет ли он права на доступ к базе данных или нет. Тогда, когда базу данных только установили на предприятии, никто не имел прав на доступ к ней. В процессе работы с базой данных права на доступ изменялись с помощью операций вида: \begin{enumerate} \item Администратор предоставляет права сотруднику \textbf{X}. \item Администратор лишает прав сотрудника \textbf{X}. \item Сотрудник \textbf{Х} начинает делиться правами со всеми непосредственными подчиненными. \item Сотрудник \textbf{Х} начинает делиться правами со всема непосредственными подчиненными. Потом для каждого непосредственного подчиненного сотрудника \textbf{Х} выполняется операция \textbf{4}. \item Сотрудник \textbf{Х} перестает делиться своими правами со всеми непосредственными подчиненными. \end{enumerate} Сотрудник \textbf{X} имеет права на доступ к корпоративной базе данных, если выполняется хотя бы одно из таких условий: \begin{enumerate} \item Последней операцией Администратора относительно сотрудника \textbf{X} было предоставление ему прав. \item Хотя бы один из непосредственных руководителей, который имеет права на данный момент, делится с ним правами на доступ. \end{enumerate} \textit{Обратите внимание}. Если сотрудник поделился правами доступа со своими подчиненными, а потом их потерял, он все равно продолжает делится правами со своими подчиненными. Однако они не смогут этим воспользоваться для получения прав, пока этот сотрудник снова не получит права на доступ. (см. второй пример из условия). Напишите программу, которая по заданной последовательности операций по изменению прав на доступ к корпоративной базе данных для каждого сотрудника определит, будет ли он иметь права на доступ после выполнения этой последовательности операций. Для заданной последовательности операций выполняются такие ограничения. Для каждого сотрудника никакая из операций \textbf{1} и \textbf{2} не встречается дважды подряд. Не встречаются операции \textbf{3} и \textbf{4}, когда в соответствующий момент времени сотрудник не имеет прав на доступ. Не встречается операция \textbf{5}, когда в соответствующий момент времени сотрудник не делится правами со своими подчиненными. \InputFile Первая строка содержит два целых числа: количество сотрудников предприятия \textbf{N }(\textbf{1 }≤ \textbf{N }≤ \textbf{10000}) и количество связей "начальник-подчиненный" \textbf{M }(\textbf{1 }≤ \textbf{M }≤ \textbf{50000}). Последующие \textbf{M} строк содержат по два натуральных числа \textbf{X }и \textbf{Y }(\textbf{1 }≤ \textbf{X}, \textbf{Y }≤ \textbf{N}), определяя, что \textbf{X }есть непосредственным начальником \textbf{Y}. Следующая строка содержит число \textbf{K }(\textbf{1 }≤ \textbf{K }≤ \textbf{20000}) - количество операций изменения прав. Следующие \textbf{K }строк содержат по два натуральных числа \textbf{T }и \textbf{X }(\textbf{1 }≤ \textbf{T }≤ \textbf{5}, \textbf{1 }≤ \textbf{X }≤ \textbf{N}) - тип операции и номер сотрудника, к которму она относится, соответственно. \OutputFile Единственная строка должна содержать \textbf{N }целых чисел, разделенных пробелами. \textbf{i}-ое число равно \textbf{1} или \textbf{0}, в зависимости от того, имеет \textbf{i}-й сотрудник права на доступ после выполнения заданных команд (\textbf{1}), или нет (\textbf{0}). \textit{\textbf{Объяснения к примеру 1}} \begin{enumerate} \item 1-й сотрудник получает права на доступ от администратора \item 1-й сотрудник начинает делиться правами на доступ со 2-м и 3-м сотрудниками. В свою очередь, 2-й делится с 4-м, а 3-й делится с 4-м и 5-м сотрудниками. \item 2-й сотрудник получает права на доступ от администратора. \item 1-й сотрудник прекращает делиться правами на доступ со 2-м и 3-м сотрудниками. В результате 3-й сотрудник теряет права на доступ, а 2-й сотрудник - нет, поскольку он имеет права на доступ от администратора. 4-й сотрудник тоже не теряет права на доступ, поскольку 2-й сотрудник имеет права на доступ и делится с ним правами. 5-й сотрудник теряет права, потому что 3-й сотрудник хотя и делится правами, на текущий момент прав не имеет. \end{enumerate} \textit{\textbf{Объяснения к примеру 2}} \begin{enumerate} \item 1-й сотрудник получает права на доступ от администратора. \item 1-й сотрудник начинает делиться правами на доступ со 2-м сотрудником. 2-й сотрудник получает права, потому что 1-й имеет права и делится правами с ним. \item Администратора лишает прав 1-го сотрудника. 2-й сотрудник также теряет права, поскольку 1-й хотя и делится с ним правами, на данный момент их не имеет. \item 1-й сотрудник получает права на доступ от администратора. 2-й сотрудник получает права, поскольку 1-й сотрудник имеет права на текущий момент времени и делится с ним правами. \end{enumerate}
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
5 5
1 2
1 3
2 4
3 4
3 5
4
1 1
4 1
1 2
5 1
Выходные данные #1
1 1 0 1 0
Автор Андрей Коротков
Источник 2012 XXV Всеукраинская олимпиада по информатике, Винница, Март 24 - 28, тур 1