printРабочее место участника

printЗадачи

2412. Сортировка

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

Задан набор из `M` операций обмена `(a_1,b_1),\ …,\ (a_M,\ b_M)` над массивом из `N` чисел `X_1,\ …,\ X_N`. Необходимо отсортировать массив в неубывающем порядке, используя эти операции обмена. Каждая пара `(a_i,\ b_i)` означает, что можно поменять местами элементы массива `X_{a_i}` и `X_{b_i}`. Операции обмена можно применять неограниченное количество раз и в произвольном порядке.
Напишите программу, определяющую, можно ли упорядочить некоторый массив, используя заданный набор операций обмена.
Первая строка ввода содержит два целых числа – размер массива `N` (`2\ ≤\ N\ ≤\ 100000`) и количество операций обмена `M` (`1\ ≤\ M\ ≤\ min(200000,(N*(N-1))/2)`). Далее следует `M` строк, содержащих по два целых числа `a_i,\ b_i` (`1\ ≤\ a_i\ <\ b_i\ ≤\ N`) – описание операции обмена. Далее следует строка, содержащая одно целое число `K` (`1\ ≤\ K\ ≤\ 10`) – количество массивов, которые нужно отсортировать. Далее следует `K` строк, в каждой строке по `N` целых чисел в диапазоне от 0 до `10^9` - массивы для сортировки.
Вывести `K` строк, для каждого массива вывести на соответствующей строке сообщение YES, если массив можно отсортировать с помощью заданного набора операций обмена, иначе вывести сообщение NO.

Пример ввода

4 2
1 2
3 4
2
4 2 8 4
1 3 2 4

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

YES
NO
loading