Загрузка [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js
 

print1028. Репликация

printРепликация

Ограничения: время – 2s/4s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

9:02
Угу. Звонок. Пользователи в Питере не могут произвести репликацию. Я определил, что это происходит из-за вспышек на Солнце. Сказал им, чтобы звонили в отдел Телекоммуникаций.

9:30
Господи, еще один юзер! Похож на предыдущего. Говорит, что они в Екатеринбурге не могут произвести репликацию с Питером. Сказал им, что это из-за вспышек на Солнце, но с трехчасовой разницей, так как они в другом часовом поясе. Посоветовал им перевести время на сервере на три часа назад.

10:17
Звонок из Воронежа. Говорят, что не могут перенаправить электронную почту в Екатеринбург. Сказал им, чтобы переставили время на сервере на три часа вперед.

11:00
Пришло мыло от начальства с требованием прекратить переставлять время на серверах. Изменил дату и время и переслал его в Ростов.

16:55
Решил запустить макрос "Создание конфликтов сохранения/репликации", чтобы следующей смене было чем заняться.

На следующий день, 8:30
Закончил читать журнал поддержки ночной смены. Работы им хватало… Просто жуткие конфликты сохранения и репликации всю ночь!
Компьютерная сеть крупного предприятия содержит N серверов баз данных. Некоторые сервера напрямую связаны между собой кабелями локальной сети, при этом от каждого сервера можно добраться по связям до любого другого.
Сервера содержат копии одной и той же базы данных. Чтобы поддерживать эти копии в одинаковом состоянии, используется система репликации – сервер рассылает каждое изменение, внесённое в его данные, всем соседним серверам, те, в свою очередь, рассылают его далее до тех пор, пока об изменении не будет оповещена вся сеть.
С целью снижения нагрузки на сеть было решено для некоторых кабелей разрешить передачу данных только в одном из направлений. Требуется написать программу, которая по описанию сети зафиксирует направление передачи по как можно большему числу кабелей таким образом, чтобы данные по-прежнему можно было передать с любого сервера на любой другой.
Ввод
Во входном файле содержатся числа N и M, где N – число серверов, M – число кабелей. За ними идут M пар чисел ai , – номера серверов, соединённых i-м кабелем. Сервер не может быть соединён сам с собой, но два сервера могут быть соединены несколькими кабелями.
Вывод
В выходном файле должно содержаться M чисел d_i, равных 0, 1 или 2. d_i\ =\ 0 означает, что для соответствующего кабеля следует сохранить двустороннюю передачу данных, d_i\ =\ 1 – что следует фиксировать направление от a_i к b_i, d_i\ =\ 2 – что следует фиксировать направление от b_i к a_i.
Если имеется несколько оптимальных решений, следует вывести любое из них.
Ограничения
1\ ≤\ N\ ≤\ 2*10^5;\ 0\ ≤\ M\ ≤\ 2*10^5

Пример ввода 1

3 3
1 2
1 2
2 3

Пример вывода 1

2
1
0

Пример ввода 2

3 3
1 2
1 3
2 3

Пример вывода 2

1
2
1
Источник: И. Туфанов, А. Кленин, ДВГУ
loading