아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

배열

시간 제한4초메모리 제한128 MB

요약
서로 다른 정수로 채워진 n×m 배열 두 개가 주어질 때, 행과 열을 각각 순열로 바꾸어 한 배열을 다른 배열로 만들 수 있는지 판정한다.
난이도

보통10점 중 6점

유형
해시맵, 정렬, 구현
정답자
아직 제출이 없습니다

문제

서로 다른 정수로 채워진 n×mn \times m 크기의 배열이 있습니다. 이 배열에는 다음 두 가지 연산을 적용할 수 있습니다.

  1. 두 행을 서로 맞바꾼다.
  2. 두 열을 서로 맞바꾼다.

어떤 배열에 위 연산들을 여러 번 적용하여 다른 배열을 만들 수 있으면, 두 배열이 서로 닮았다고 합니다.

여러 쌍의 배열이 주어질 때, 각 쌍의 두 배열이 서로 닮았는지 판별하는 프로그램을 작성하세요.

입력

첫째 줄에 배열 쌍의 개수 tt (1≤t≤101 \le t \le 10)가 주어집니다. 이어서 각 배열 쌍의 정보가 차례로 주어집니다.

각 쌍의 정보는 먼저 두 정수 nn과 mm (1≤n,m≤10001 \le n, m \le 1000)이 공백 하나로 구분되어 한 줄에 주어지는 것으로 시작합니다. 여기서 nn과 mm은 두 배열이 공통으로 가지는 행의 수와 열의 수입니다.

이어지는 nn개의 줄에는 첫 번째 배열이 주어집니다. 그중 ii번째 줄에는 첫 번째 배열의 ii번째 행에 있는 mm개의 정수 aija_{ij} (−106≤aij≤106-10^6 \le a_{ij} \le 10^6)가 공백 하나로 구분되어 주어집니다.

그다음 nn개의 줄에는 두 번째 배열이 같은 형식으로 주어지며, 그 ii번째 줄의 정수들을 bijb_{ij}라고 합니다.

한 배열 안에 등장하는 모든 수는 서로 다릅니다.

출력

각 배열 쌍마다 한 줄씩, 모두 tt개의 줄을 출력합니다. kk번째 줄에는 kk번째 쌍의 두 배열이 서로 닮았으면 TAK을, 그렇지 않으면 NIE를 출력합니다. (TAK과 NIE는 각각 "예"와 "아니오"를 뜻합니다.)

힌트

행이나 열을 맞바꾸는 연산은 "같은 행에 있다" 또는 "같은 열에 있다"라는 관계를 그대로 보존합니다. 따라서 두 배열이 닮으려면, 먼저 두 배열에 등장하는 값들의 집합이 같아야 하고, 한 배열에서 같은 행(또는 같은 열)에 있는 값들은 다른 배열에서도 모두 같은 행(또는 같은 열)에 있어야 합니다. 이 조건을 이용해 행끼리, 열끼리의 대응 관계가 모순 없이 정해지는지 확인하면 닮음 여부를 판별할 수 있습니다.

예제3

  1. 예제 1

    입력
    2
    4 3
    1 2 3
    4 5 6
    7 8 9
    10 11 12
    11 10 12
    8 7 9
    5 4 6
    2 1 3
    2 2
    1 2
    3 4
    5 6
    7 8
    
    예상 출력
    TAK
    NIE
    
  2. 예제 2

    입력
    1
    1 1
    42
    42
    
    예상 출력
    TAK
    
  3. 예제 3

    입력
    1
    1 1
    42
    7
    
    예상 출력
    NIE