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

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

함수 복원

시간 제한1.5초메모리 제한1024 MB

요약
N개 정점의 함수 그래프에 대한 도달 가능 행렬이 주어질 때, 이와 일치하는 함수 f의 개수를 10^9+7로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

유형
그래프, 조합론, 수학, 유니온 파인드
정답자
아직 제출이 없습니다

문제

자연수 NN이 주어질 때, 11 이상 NN 이하의 자연수 ii에 대해 정의되는 함수 ff가 있다. 모든 ii에 대해 f(i)f(i) 또한 11 이상 NN 이하의 자연수다.

ff에 대한 함수 그래프를 정점 ii에서 정점 f(i)f(i)로 향하는 단방향 간선들로 이루어진 그래프라 부르자. 이 그래프는 ff에 따라 유일하게 결정된다.

우리는 함수 ff를 알지 못하지만, ff에 대한 함수 그래프에서 모든 정점에 대한 도달 가능성 정보를 가지고 있다. 정점 uu에서 정점 vv에 도달 가능하다는 것은 00개 이상의 간선을 통해 정점 uu에서 정점 vv로 갈 수 있다는 뜻이다.

함수 ff로 가능한 경우의 수를 구하여라.

입력

첫 줄에 NN이 주어진다. (1≤N≤5001 \leq N \leq 500)

그 후, NN개의 줄에 걸쳐 ff에 대한 함수 그래프에서 도달 가능성 정보가 공백으로 구분되어 주어진다. ii번째 줄의 jj번째 수는 ii에서 jj에 도달 가능하면 11, 그렇지 않으면 00이다. 가능한 함수 ff가 존재하지 않는 경우는 주어지지 않는다.

출력

함수 ff로 가능한 경우의 수를 109+710^9 + 7로 나눈 나머지를 출력한다.

예제2

  1. 예제 1

    입력
    6
    1 1 1 1 0 0
    0 1 1 1 0 0
    0 1 1 1 0 0
    0 1 1 1 0 0
    1 1 1 1 1 0
    0 0 0 0 0 1
    
    예상 출력
    6
    
  2. 예제 2

    입력
    9
    1 0 1 1 0 0 0 0 0
    1 1 1 1 0 0 0 0 0
    1 0 1 1 0 0 0 0 0
    1 0 1 1 0 0 0 0 0
    0 0 0 0 1 0 0 0 0
    0 0 0 0 1 1 0 0 1
    1 1 1 1 0 0 1 0 0
    0 0 0 0 1 1 0 1 1
    0 0 0 0 1 0 0 0 1
    
    예상 출력
    6