10640: Dynamic connectivity offline - 1
Є пустий неорієнтований граф. Необхідно опрацювати наступні запити.
\(0 V1 V2\) - додати ребро між вершинами \(V1\) та \(V2\). Гарантується що в даний момент такого ребра немає в графі.
\(1 V1 V2\) - видалити ребро між вершинами \(V1\) та \(V2\). Гарантується що таке ребро існує в графі в даний момент
\(2 V1 V2\) - перевірити чи вершини \(V1\) та \(V2\) знаходяться в одній компоненті зв'язності (існує шлях з вершини \(V1\) у вершину \(V2\))
Формат вхідних даних
Перший рядок містить два цілих числа \(N,M\) - кількість вершин та кількість запитів. (\(1 \le N \le 5000\)), (\(0 \le M \le 500000\))
Кожен з наступних \(M\) рядків містить три числа \(type V1 V2\) - які позначають відповідний запит.
Формат вихідних даних
Для кожного запиту \(type=2\) виведіть Y якщо вершини лежать в одній компоненті зв'ясності, і N - якщо в різних.
А якщо можливо, то виведіть номера політиків (кожне в окремому рядку) які мають бути присутні на засіданні.
Якщо розв'язків є декілька - виведіть, будь-який.
Приклад вхідних даних-1
200 5
2 123 127
0 123 127
2 123 127
1 127 123
2 123 127
Приклад вихідних даних-1
N
Y
N
Приклад вхідних даних-2
4 10
0 1 2
0 2 3
0 3 1
2 1 4
0 4 3
2 1 4
1 2 3
2 1 4
1 1 3
2 1 4
Приклад вихідних даних-2
N
Y
Y
N
Коментарі