Олимпиадный тренинг

Задача . E. Перестановка строк и столбцов


У вас была матрица \(a\) размера \(n\) на \(m\), содержащая перестановку целых чисел от \(1\) до \(n \cdot m\).

Перестановкой из \(n\) целых чисел называется массив, содержащий все числа от \(1\) до \(n\) ровно один раз. Например, массивы \([1]\), \([2, 1, 3]\), \([5, 4, 3, 2, 1]\) являются перестановками, а массивы \([1, 1]\), \([100]\), \([1, 2, 4, 5]\) — нет.

Матрица содержит перестановку, если при выписывании всех её элементов полученный массив является перестановкой. Матрицы \([[1, 2], [3, 4]]\), \([[1]]\), \([[1, 5, 3], [2, 6, 4]]\) содержат перестановки, а матрицы \([[2]]\), \([[1, 1], [2, 2]]\), \([[1, 2], [100, 200]]\) — нет.

За одну операцию вы можете совершить одно из двух следующих действий:

  • выбрать столбец \(c\) и столбец \(d\) (\(1 \le c, d \le m\), \(c \ne d\)) и поменять эти столбцы местами;
  • выбрать строку \(c\) и строку \(d\) (\(1 \le c, d \le n\), \(c \ne d\)) и поменять эти строки местами.

Вы можете совершить любое количество операций.

Вам даны исходная матрица \(a\) и матрица \(b\). Ваша задача — определить, можно ли с помощью данных операций сделать из матрицы \(a\) матрицу \(b\).

Входные данные

Первая строка содержит целое число \(t\) (\(1 \le t \le 10^4\)) — количество наборов входных данных. Далее следуют описания наборов входных данных.

Первая строка описания каждого набора входных данных содержит \(2\) целых числа \(n\) и \(m\) (\(1 \le n, m \le n \cdot m \le 2 \cdot 10^5\)) — размеры матрицы.

Следующие \(n\) строк содержат по \(m\) целых чисел \(a_{ij}\) каждая (\(1 \le a_{ij} \le n \cdot m\)). Гарантируется, что матрица \(a\) является перестановкой.

Следующие \(n\) строк содержат по \(m\) целых чисел \(b_{ij}\) каждая (\(1 \le b_{ij} \le n \cdot m\)). Гарантируется, что матрица \(b\) является перестановкой.

Гарантируется, что сумма значений \(n \cdot m\) по всем наборам входных данных не превосходит \(2 \cdot 10^5\).

Выходные данные

Для каждого набора входных данных выведите «YES», если вторая матрица может быть получена из первой, и «NO» в противном случае.

Вы можете выводить каждую букву в любом регистре (строчную или заглавную). Например, строки «yEs», «yes», «Yes» и «YES» будут приняты как положительный ответ.

Примечание

Во втором примере исходная матрица выглядит так:

\( \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} \)

При обмене строк \(1\) и \(2\) местами она станет такой:

\( \begin{pmatrix} 3 & 4 \\ 1 & 2 \end{pmatrix} \)

При обмене столбцов \(1\) и \(2\) местами она станет равна матрице \(b\):

\( \begin{pmatrix} 4 & 3 \\ 2 & 1 \end{pmatrix} \)


Примеры
Входные данныеВыходные данные
1 7
1 1
1
1
2 2
1 2
3 4
4 3
2 1
2 2
1 2
3 4
4 3
1 2
3 4
1 5 9 6
12 10 4 8
7 11 3 2
1 5 9 6
12 10 4 8
7 11 3 2
3 3
1 5 9
6 4 2
3 8 7
9 5 1
2 4 6
7 8 3
2 3
1 2 6
5 4 3
6 1 2
3 4 5
1 5
5 1 2 3 4
4 2 5 1 3
YES
YES
NO
YES
YES
NO
YES

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя