Репликация
Ограничения: время – 2s/4s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
9:02
Угу. Звонок. Пользователи в Питере не могут произвести репликацию. Я определил, что это происходит из-за вспышек на Солнце. Сказал им, чтобы звонили в отдел Телекоммуникаций.
9:30
Господи, еще один юзер! Похож на предыдущего. Говорит, что они в Екатеринбурге не могут произвести репликацию с Питером. Сказал им, что это из-за вспышек на Солнце, но с трехчасовой разницей, так как они в другом часовом поясе. Посоветовал им перевести время на сервере на три часа назад.
10:17
Звонок из Воронежа. Говорят, что не могут перенаправить электронную почту в Екатеринбург. Сказал им, чтобы переставили время на сервере на три часа вперед.
11:00
Пришло мыло от начальства с требованием прекратить переставлять время на серверах. Изменил дату и время и переслал его в Ростов.
16:55
Решил запустить макрос "Создание конфликтов сохранения/репликации", чтобы следующей смене было чем заняться.
На следующий день, 8:30
Закончил читать журнал поддержки ночной смены. Работы им хватало… Просто жуткие конфликты сохранения и репликации всю ночь!
Компьютерная сеть крупного предприятия содержит `N` серверов баз данных.
Некоторые сервера напрямую связаны между собой кабелями локальной сети, при этом
от каждого сервера можно добраться по связям до любого другого.
Сервера содержат копии одной и той же базы данных. Чтобы поддерживать
эти копии в одинаковом состоянии, используется система репликации – сервер
рассылает каждое изменение, внесённое в его данные, всем соседним серверам,
те, в свою очередь, рассылают его далее до тех пор, пока об изменении не будет оповещена вся сеть.
С целью снижения нагрузки на сеть было решено для некоторых кабелей
разрешить передачу данных только в одном из направлений.
Требуется написать программу, которая по описанию сети зафиксирует направление
передачи по как можно большему числу кабелей таким образом,
чтобы данные по-прежнему можно было передать с любого сервера на любой другой.
Ввод
Во входном файле содержатся числа `N` и `M`, где `N` – число серверов, `M` – число кабелей.
За ними идут `M` пар чисел `a_i\ b_i`, – номера серверов, соединённых `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
Пример ввода 2
3 3
1 2
1 3
2 3
Источник: И. Туфанов, А. Кленин, ДВГУ