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

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

CYK의 너무너무 재밌는 그래프 만들기 놀이

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

요약
K가지 색으로 정점을 칠하고 각 정점에서 색이 다른 작은 정점으로 최대 하나의 간선을 그리는 경우의 수를 1000000007로 나눈 나머지를 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 조합론, 수학
정답자
아직 제출이 없습니다

문제

정점이 NN개인 그래프를 만든다. 정점에는 11부터 NN까지 번호를 매기고, 각 정점에 KK가지 색 중 하나를 칠한다. 색을 칠하는 방법에는 아무 제한이 없다.

색을 다 칠하면 간선을 추가한다. 간선은 다음 두 규칙을 지켜야 한다.

  • 1≤j<i≤N1 \le j < i \le N이고 정점 ii와 정점 jj의 색이 서로 다르면, ii에서 jj로 향하는 간선을 추가할 수 있다. 추가하지 않아도 된다.
  • 2≤i≤N2 \le i \le N인 정점 ii에서 나가는 간선은 최대 한 개다. 즉 정점 ii의 out-degree가 11을 넘지 않는다.

정점 11에서는 번호가 더 작은 정점이 없으므로 나가는 간선을 만들 수 없다.

두 그래프는 모든 정점의 색이 같고 이어진 간선의 집합도 같을 때 서로 같다고 본다. 예를 들어 N=3N = 3, K=2K = 2이면 아래 그림처럼 서로 다른 그래프가 24개 나온다.

NN과 KK가 주어질 때, 서로 다른 그래프의 개수를 1,000,000,007로 나눈 나머지를 구하라.

입력

첫 줄에 정점의 개수 NN (1≤N≤1001 \le N \le 100)과 쓸 수 있는 색의 개수 KK (1≤K≤31 \le K \le 3)가 공백 한 개로 구분되어 주어진다.

출력

서로 다른 그래프의 개수를 1,000,000,007로 나눈 나머지를 한 줄에 출력한다.

예제2

  1. 예제 1

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

    입력
    1 3
    
    예상 출력
    3