Контест Senior Задачи на Java обновлено

Связность сети: система непересекающихся множеств

Условие

В сети n серверов, изначально не связанных. Обработайте запросы:

  • union a b проложить канал между серверами a и b;
  • same a b вывести YES, если между серверами есть путь по каналам, иначе NO;
  • count вывести число компонент связности.

Ввод: в первой строке n и q (1 ≤ n ≤ 2·10⁴, 1 ≤ q ≤ 2·10⁴), далее запросы, номера серверов от 1 до n.

Вывод: ответы на same и count.

Пример

5 7
union 1 2
same 1 2
same 1 3
count
union 3 2
same 1 3
count
YES
NO
4
YES
3

Как подойти

DSU со сжатием путей и union by size.

Подсказки: 2
  1. Каждая компонента задаётся корнем дерева.
  2. Сжатие путей и объединение по размеру.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.