一、问题:
Nastya came to her informatics lesson, and her teacher who is, by the way, a little bit famous here gave her the following task.
Two matrices A and B are given, each of them has size n×m. Nastya can perform the following operation to matrix A unlimited number of times:
Nastya's task is to check whether it is possible to transform the matrix A to the matrix B.
Example of the operation
As it may require a lot of operations, you are asked to answer this question for Nastya.
A square submatrix of matrix M is a matrix which consist of all elements which comes from one of the rows with indeces x,x+1,…,x+k−1 of matrix M and comes from one of the columns with indeces y,y+1,…,y+k−1 of matrix M. k is the size of square submatrix. In other words, square submatrix is the set of elements of source matrix which form a solid square (i.e. without holes).
The first line contains two integers nn and mm separated by space (1 ≤ n,m ≤ 500) — the numbers of rows and columns in A and B respectively.
Each of the next nn lines contains mm integers, the j-th number in the i-th of these lines denotes the j-th element of the i-th row of the matrix A (1 ≤ Aij ≤ 1e9).
Each of the next nn lines contains mm integers, the j-th number in the i-th of these lines denotes the j-th element of the i-th row of the matrix B (1 ≤ Bij ≤ 1e9).
Print "YES" (without quotes) if it is possible to transform A to B and "NO" (without quotes) otherwise.
You can print each letter in any case (upper or lower).
2 2
1 1
6 1
1 6
1 1
YES
2 2
4 4
4 5
5 4
4 4
NO
3 3
1 2 3
4 5 6
7 8 9
1 4 7
2 5 6
3 8 9
YES
二、题意:
给出两个 n×m 的矩阵 A,B,你可以对A矩的 k×k 的子矩阵进行转置操作,操作可进行任意次。
问:是否能将 A 变成 B,可以则输出YES,反之输出NO。
三、思路:
不论如何转置,A矩阵的任意一条反对角线上的元素构成的集合,都是不变的。
我们可以每次都选取 2×2 的子矩阵进行转置,必然能将任意一条反对角线上的任意两个相邻的元素交换位置,而只要能随意交换相邻元素,任意一个序列就可以变成任意的另一个序列。
因此对于A, B两矩阵,只要满足任意一条反对角线上的它们的元素构成的集合相同,就能从 A 变成 B。
四、代码:
#include