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

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

색칠 공부

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

요약
각 그림 i가 f_i와 같은 그림이 아닐 때 서로 다른 색을 쓰도록 N개 그림을 K가지 색으로 칠하는 경우 수를 1,000,000,007로 나눈 나머지를 구합니다.
난이도

보통10점 중 6점

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

문제

상근이는 시간이 날 때마다 색칠 공부를 한다. 상근이에게는 색이 KK가지 담긴 팔레트와 붓 한 자루가 있다. 친구 선영이는 생일 선물로 색칠 공부 책을 줬다. 책에는 그림이 NN개 있고, 1번부터 NN번까지 번호가 붙어 있다.

상근이는 그림마다 KK가지 색 중 하나를 골라 칠하려고 한다. 선영이는 화려한 것을 좋아해서 숫자 NN개 f1,f2,…,fNf_1, f_2, \dots, f_N을 정해 줬다. 상근이는 ii번 그림을 fif_i번 그림과 다른 색으로 칠해야 한다. ii와 fif_i가 같으면 ii번 그림은 아무런 제한 없이 칠할 수 있다.

NN과 KK, 그리고 fif_i가 모두 주어졌을 때 상근이가 색칠 공부 책을 칠하는 방법의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 NN과 KK가 주어진다. (1≤N,K≤1,000,0001 \le N, K \le 1{,}000{,}000)

둘째 줄에 숫자 NN개 f1,f2,…,fNf_1, f_2, \dots, f_N이 주어진다. (1≤fi≤N1 \le f_i \le N)

출력

첫째 줄에 색칠 공부 책을 칠하는 방법의 수를 출력한다. 방법의 수가 매우 많기 때문에 1,000,000,0071{,}000{,}000{,}007로 나눈 나머지를 출력한다.

힌트

N=2N = 2, K=3K = 3, f=(2,1)f = (2, 1)인 경우 1번 그림과 2번 그림을 같은 색으로 칠할 수 없다. 두 그림에 칠한 색을 순서쌍으로 적으면 (1,2), (1,3), (2,1), (2,3), (3,1), (3,2)의 여섯 가지다.

예제4

  1. 예제 1

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

    입력
    3 4
    2 3 1
    
    예상 출력
    24
    
  3. 예제 3

    입력
    3 4
    2 1 1
    
    예상 출력
    36
    
  4. 예제 4

    입력
    3 4
    1 1 2
    
    예상 출력
    36