Coloring Madness

문제 정보

    • 문제 ID
    • 시간 제한
    • 메모리 제한
    • 제출 횟수
    • 정답 횟수 (비율)
    • 출제자
    • 출처
    • 분류

문제

$N$개의 정점을 가진 방향성 그래프가 있다. 각 그래프의 정점에 $1$에서 $N$까지의 번호가 매겨져 있다.
이 그래프에는 $N \times (N-1)$개의 간선이 존재하는데, 이는 임의의 서로 다른 두 정점을 연결하는 방향성 간선이 하나씩 있는 것이다. 이 간선을 이용해 $x$번 정점에서 $y$번 정점으로 이동하는 데에는 $t_{x, y}$의 시간이 걸린다. 이 때 $t_{x, y} \neq t_{y, x}$일 수도 있음에 유의하라.

또한, 각 정점에는 색이 칠해져 있다. 이 색은 모두 구분이 가능하며, $N$가지의 색이 있다. 색에도 $1$에서 $N$까지의 번호를 붙이도록 한다. 초기에 $i$번 정점에 색칠된 색의 번호를 $C_i$라고 하자. 경근이는 $x$번 정점에서 시작하여 그래프 위를 돌아다니며 정점에 칠해진 색을 바꾸려고 하는데, 그 과정은 다음과 같다 :

  1. 모든 정점이 같은 색으로 칠해져 있다면 과정을 종료한다.
  2. 만약 경근이가 현재 $i$번 정점에 있다면, 다음에 이동할 정점으로 $i$번 정점과는 다른 $j$를 각각 $\frac{1}{N - 1}$의 확률로 선택한다.
  3. $i$번 정점의 색 $C_i$를 $p$의 확률로 색 $C_j$로 칠한다.
  4. 경근이가 $j$번 정점으로 이동한다. 이 때 $t_{i, j}$의 시간이 걸린다. 그 후, $j$번 정점의 색 $C_j$를 $q$의 확률로 2번 단계에서의 $C_i$로 칠한다. 1번 단계로 돌아간다.

경근이가 색칠하는 과정을 끝내기까지 걸리는 시간의 기댓값을 구하여라.

입력

첫 번째 줄에 정점의 개수를 나타내는 정수 $N$ ($1 \le N \le 25$)이 주어진다.

두 번째 줄에 두 개의 정수 $P$, $Q$ ($1 \le P, Q < 106$)가 공백으로 구분되어 주어진다. 이는 $p = \frac{P}{106}$, $q = \frac{Q}{106}$임을 나타낸다.

세 번째 줄부터 $N$ 개의 줄에 걸쳐 각 줄에 $N$개의 정수가 공백으로 구분되어 주어진다. 이 때, $i$번째 줄의 $j$번째 정수는 $t_{i, j}$ ($0 \le t_{i, j} \le 106$ 이고 $t_{i, i}=0$)를 나타낸다.

$N + 3$번쨰 줄에 초기 상태의 개수를 나타내는 정수 $Q$ ($1 \le Q \le 100$)가 주어진다.

$N + 4$번째 줄부터 $Q$개의 줄에 걸쳐 각 줄에 $N + 1$개의 정수 $C_1$, $C_2$, $\cdots$, $C_N$, $x$ ($1 \le C_i, x \le N$)가 공백으로 구분되어 주어진다. 이는 처음 각 정점에 $C_1$, $C_2$, $\cdots$, $C_N$의 색이 칠해져 있고, $x$번 정점에서 시작할 때 색칠하는 과정을 끝내기는 데 걸리는 시간의 기댓값을 구해야 한다는 의미이다.

출력

$Q$개의 줄에 걸쳐, 각 초기 상태에 대한 기댓값을 주어진 순서대로 출력한다. 이 때 기댓값을 기약분수로 나타냈을 때 $\frac{a}{b}$라고 하면, $a = bx \pmod{1\,000\,000\,007}$을 만족하는 $0$이상 $1\,000\,000\,006$이하의 $x$를 출력해야 한다. 이러한 $x$가 존재하는 것이 보장된 입력만 주어지고, $x$가 유일하다는 것은 증명되어 있다.

예제 입력

Example 1
2
500000 500000
0 3
6 0
2
1 2 1
1 2 2

Example 2
4
1 999999
0 1 2 3
4 0 5 6
7 8 0 9
10 11 12 0
8
1 2 3 4 1
2 2 4 4 2
2 4 2 4 3
1 3 3 3 4
2 1 1 4 1
2 1 3 2 2
1 1 1 1 3
4 3 2 1 4}

Example 3
10
12345 67890
0 1 2 3 4 5 6 7 8 9
2 0 8 6 4 2 4 6 8 2
3 3 0 3 3 3 3 3 3 3
9 9 7 0 5 5 3 3 1 1
4 5 4 5 0 9 9 9 9 9
7 8 7 8 7 0 8 7 8 7
1 2 1 2 1 2 0 2 1 2
8 8 8 6 6 6 6 0 5 5
2 3 4 2 3 4 2 3 0 4
9 8 7 6 5 4 3 2 1 0
10
10 1 2 3 4 5 6 7 8 9 1
2 10 8 6 4 2 4 6 8 2 2
3 3 10 3 3 3 3 3 3 3 3
9 9 7 10 5 5 3 3 1 1 4
4 5 4 5 10 9 9 9 9 9 5
7 8 7 8 7 10 8 7 8 7 6
1 2 1 2 1 2 10 2 1 2 7
8 8 8 6 6 6 6 10 5 5 8
2 3 4 2 3 4 2 3 10 4 9
9 8 7 6 5 4 3 2 1 10 10

예제 출력

Example 1
8
10

Example 2
927109659
403093474
333557301
397999267
133598154
72237072
0
167611085

Example 3
237022287
143958236
496080996
656087792
138754989
710634903
257351692
992622856
107435663
237022287

노트

예제 입출력에서 Example로 시작하는 줄은 실제 입출력에 포함되지 않습니다. 각각을 하나의 입출력 세트로 읽어주세요.

0개의 댓글이 있습니다.