Logo
(追記) (追記ここまで)

28614번 - Распределенная Матрица 다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB3412531.250%

문제

В условиях нехватки энергии Матрица была модифицирована, чтобы расходовать как можно меньше энергетических ресурсов. Всего есть $n$ узлов Матрицы с уникальными номерами от 1ドル$ до $n$. Изначально энергия есть только в генераторе, который является узлом с номером 1ドル$.

Требующие энергии узлы постепенно подключаются к уже запитанным узлам, и начинают получать энергию от них, образуя сеть питания в виде дерева. Некоторые узлы могут отказывать и восстанавливаться спустя время после отказа. Уже подключенный к сети узел никогда не переподключается к другим узлам, даже если какой-то из косвенно питающих его узлов отказал.

Ненадежностью узла называется время, прошедшее с момента его последнего восстановления (либо с момента подключения этого узла к сети, если он еще не отказывал). Временем подключения генератора считается момент времени 0ドル$.

Требуется обработать $m$ событий. Событие номер $i$ происходит ровно спустя $i$ секунд от начала и может быть одного из следующих видов:

  • <<! $x_i$ $y_i$>> --- узел $y_i$ подключается к узлу $x_i$ и начинает получать энергию от него;
  • <<- $x_i$>> --- узел $x_i$ отказывает и перестает проводить энергию;
  • <<+ $x_i$>> --- ранее отказавший узел $x_i$ восстанавливается и продолжает проводить энергию;
  • <<? $x_i$ $y_i$>> --- требуется выяснить, насколько надежна пара узлов $x_i$ и $y_i$.

Для ответа на запрос последнего типа требуется проверить, получают ли энергию оба узла $x_i$ и $y_i$. Узел получает энергию, если сам подключен к сети, и все узлы на пути от генератора до него включительно находятся в исправном состоянии (не отказали). Если оба узла $x_i$ и $y_i$ получают энергию, требуется вывести суммарную ненадежность всех узлов, от которых зависит работа хотя бы одного из узлов $x_i$ или $y_i$ (то есть узлов, расположенных на путях от них до генератора).

입력

В первой строке ввода через пробел даны два целых числа $n$ и $m$ --- общее количество узлов, которым требуется питание, и количество событий, которые надо обработать (2ドル \leqslant n, m \leqslant 2 \cdot 10^5$).

В $i$-й из следующих $m$ строк дано описание $i$-го запроса (который происходит в момент времени $i$). Описание формата запросов дано в условии. За символом, обозначающим тип запроса, в зависимости от этого типа, следует либо одно целое число $x_i,ドル либо два целых числа $x_i$ и $y_i,ドル разделенные пробелом --- номера задействованных в запросе узлов (1ドル \leqslant x_i, y_i \leqslant n$; $x_i \neq y_i$).

Гарантируется, что в запросе первого типа узел $x_i$ уже подключен к сети, а $y_i$ --- нет. Также для запросов второго и третьего типа гарантируется, что узел $x_i$ отказывает только если был до этого исправен, и наоборот, восстанавливается только после соответствующего отказа.

출력

После каждого запроса четвертого типа следует в отдельной строке вывести ответ на этот запрос. Если хотя бы один из узлов $x_i$ и $y_i$ не получает энергию, следует вывести <<-1>> (без кавычек). Если же оба узла получают энергию, следует вывести целое число, равное сумме ненадежностей всех узлов, лежащих на путях от генератора до $x_i$ и $y_i$.

제한

예제 입력 1

3 7
! 1 2
! 1 3
? 2 3
- 3
? 2 3
+ 3
? 2 3

예제 출력 1

6
-1
14

예제 입력 2

3 7
! 1 2
! 2 3
? 1 3
- 2
? 1 3
+ 2
? 1 3

예제 출력 2

6
-1
13

힌트

В первом примере отказ третьего узла, очевидно, влечет ответ <<-1>> на второй запрос <<? 2 3>>. Ответ на первый запрос равен 6ドル,ドル так как с момента подключения к сети генератора, второго узла и третьего, прошли 3ドル,ドル 2ドル$ и 1ドル$ секунда, соответственно. В момент третьего запроса с момента подключения генератора и второго узла прошло 7ドル$ и 6ドル$ секунд, соответственно, тогда как третий узел вернулся в строй ровно 1ドル$ секунду назад, что дает ответ 14ドル$.

Во втором примере отказ второго узла аналогично влечет ответ <<-1>> на второй запрос. Ответ на первый запрос вычисляется так же, как и в первом примере, а на третий --- как 7ドル + 1 + 5 = 13$.

출처

Olympiad > Russian Olympiad in Informatics > Internet Olympiads in Informatics > 2021-2022 Season > January 29, 2022 D번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /