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

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

선형대수학과 응용

시간 제한2초메모리 제한256 MB

요약
0이 최대 5n개뿐인 n×n 행렬 A에서 A+A^2+...+A^k가 모든 원소가 0이 아닌 최소 k를 구하고, 불가능하면 0을 출력합니다.
난이도

보통10점 중 7점

유형
그래프, BFS, 행렬, 최단 경로
정답자
아직 제출이 없습니다

문제

선형대수학을 수강하는 기념으로 청응이가 효원이에게 n×nn\times n 행렬 AA를 선물해줬다. 계산하기 편하라고 모든 항이 음이 아닌 정수이고 0이 아닌 항이 5n5n개 이하인 행렬을 줬다. 선형대수학을 수강하는 기대 속에 효원이는 A2A^2을 계산해봤고, A+A2A+A^2은 AA보다 0인 항의 개수가 작거나 같다는 것을 확인했다. 마찬가지로 A+A2+A3A+A^2+A^3은 A+A2A+A^2보다 0인 항의 개수가 작거나 같았다. 효원이는 이런 고민에 빠지게 되었다.

"어떤 kk가 존재해서 A+A2+⋯+AkA+A^2+\cdots+A^k은 0인 항이 아예 없을 수도 있을까? 그런 kk가 존재한다면 최솟값은 얼마일까?"

효원이가 청응이에게 이걸 물어봤더니 "kk가 존재한다면 Cayley-Hamilton 정리에 따라 nn보다 작거나 같을 건데..."라는 대답을 받았다. 이 답변에 만족하지 않은 효원이를 위해, kk가 존재하는지, 존재한다면 최솟값을 출력하는 프로그램을 작성하시오.

입력

첫 줄에는 행렬의 크기 nn이 주어지며, 5≤n≤1,0005\leq n\leq 1,000을 만족한다.

둘째 줄부터 (n+1)(n+1)번째 줄에 걸쳐 n×nn\times n 행렬 AA가 주어진다. 각 줄에는 nn개의 정수가 공백으로 구분되어 주어지며, (i+1)(i+1)번째 줄의 jj번째 수가 aija_{ij}에 해당한다. 각 항은 0≤aij≤1090\leq a_{ij}\leq 10^9을 만족하며, aija_{ij} 중 00보다 큰 항이 5n5n개 이하이다.

출력

조건을 만족하는 kk가 존재한다면 최소 kk를 출력하시오. 조건을 만족하는 kk가 없다면 0을 출력하시오.

예제2

  1. 예제 1

    입력
    5
    3 1 0 0 1
    0 0 0 8 0
    2 0 1 0 1
    0 0 0 0 1
    1 5 4 0 0
    예상 출력
    3
  2. 예제 2

    입력
    5
    0 0 0 0 5
    0 0 0 4 0
    0 0 3 0 0
    0 2 0 0 0
    1 0 0 0 0
    예상 출력
    0