군 (Group)

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

요약
원소 n개에 대한 곱셈표가 주어질 때, 연산이 결합법칙을 만족하고 항등원과 역원이 존재하여 군을 이루는지 판정한다.
난이도

보통10점 중 4점

유형
구현, 완전 탐색, 수학, 시뮬레이션
정답자
아직 제출이 없습니다

문제

수학에서 군(group) GG 는 원소들의 집합과 하나의 연산(×\times 로 표기)으로 이루어진 대상으로, xx 와 yy 가 GG 에 속하면 x×yx \times y 도 GG 에 속한다. 이 연산은 다음 성질을 만족한다.

  • 결합법칙: GG 의 모든 xx, yy, zz 에 대해 x×(y×z)=(x×y)×zx \times (y \times z) = (x \times y) \times z 이다.
  • 항등원: GG 에는 항등원 ii 가 존재하여, 모든 x∈Gx \in G 에 대해 x×i=xx \times i = x 이고 i×x=xi \times x = x 이다.
  • 역원: 모든 원소 xx 에 대해 역원 x−1x^{-1} 이 존재하여 x×x−1=ix \times x^{-1} = i 이고 x−1×x=ix^{-1} \times x = i 이다.

군은 원자의 양자 상태나 루빅스 큐브를 푸는 동작을 모형화하는 등 다양한 곳에 쓰인다. 덧셈에 대한 정수 전체는 분명히 군을 이루지만(00 이 항등원, xx 의 역원은 −x-x, 결합법칙은 연습으로 증명할 수 있다) 이 군은 무한하며, 이 문제에서는 유한군만 다룬다.

유한군의 간단한 예로 덧셈에 대한 1010 을 법으로 하는 정수가 있다. 원소는 0,1,…,90, 1, \ldots, 9 이고, 두 수를 더한 뒤 가장 낮은 자리 숫자만 남긴다. 여기서 항등원은 00 이다. 이 군은 x×y=y×xx \times y = y \times x 도 만족하지만, 항상 그런 것은 아니다. 원소가 a,b,c,d,e,ia, b, c, d, e, i 인 군을 생각하자. 아래 "곱셈표"가 그 연산을 정의한다. 필요한 성질(결합법칙, 항등원, 역원)이 모두 성립하지만, 예를 들어 c×d=ac \times d = a 인 반면 d×c=bd \times c = b 이다.

주어진 곱셈표들의 나열을 읽어, 각 표가 정의하는 구조가 군인지 아닌지 판정하는 프로그램을 작성하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 정수 nn (0≤n≤1000 \le n \le 100) 으로 시작한다. n=0n = 0 인 테스트 케이스가 나오면 입력이 끝난다. 입력을 간단히 하기 위해 후보 구조의 nn 개 원소를 정수 1,…,n1, \ldots, n 으로 나타내며, 항등원은 이 가운데 어느 것이든 될 수 있다(반드시 원소 11 인 것은 아니다). 정수 nn 다음에는 nn 개의 줄이 오고, 각 줄에는 [1,…,n][1, \ldots, n] 범위의 정수 nn 개가 있다. 이 중 pp 번째 줄의 qq 번째 정수가 p×qp \times q 의 값이다.

출력

각 테스트 케이스에 대해, 구조가 군이면 한 줄에 yes 를, 그렇지 않으면 한 줄에 no 를 출력한다. n=0n = 0 인 마지막 테스트 케이스에 대해서는 아무것도 출력하지 않는다.

예제1

  1. 예제 1

    입력
    2
    1 2
    2 1
    6
    1 2 3 4 5 6
    2 1 5 6 3 4
    3 6 1 5 4 2
    4 5 6 1 2 3
    5 4 2 3 6 1
    6 3 4 2 1 5
    7
    1 2 3 4 5 6 7
    2 1 1 1 1 1 1
    3 1 1 1 1 1 1
    4 1 1 1 1 1 1
    5 1 1 1 1 1 1
    6 1 1 1 1 1 1
    7 1 1 1 1 1 1
    3
    1 2 3
    3 1 2
    3 1 2
    0
    
    예상 출력
    yes
    yes
    no
    no