eolymp
bolt
Try our new interface for solving problems
Məsələlər

База данных

База данных

На предприятии работает \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}
Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
5 5
1 2
1 3
2 4
3 4
3 5
4
1 1
4 1
1 2
5 1
Çıxış verilənləri #1
1 1 0 1 0
Müəllif Андрей Коротков
Mənbə 2012 XXV All-Ukrainian Informatics Olympiad, Vinnitsa, March 24 - 28, Round 1