#L3512. 「USACO 2021 US Open Platinum」Routing Schemes

    ID: 4919 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>图结构组合数学容斥原理网络流欧拉回路矩阵树定理

「USACO 2021 US Open Platinum」Routing Schemes

题目描述

考虑一个由 NN2N1002 \le N \le 100)个编号为 1N1 \ldots N 的结点组成的网络。每个结点被指定为发送者(sender)、接收者(receiver)或两者均不是。发送者的数量 SS 与接收者的数量相等(S1S \ge 1)。

这一网络中结点间的连接关系可以用一系列形式为 iji \to j 的有向边表示,代表由结点 ii 可以路由到结点 jj。有趣的是,所有的边满足性质 i<ji < j,除了 KK 条满足 i>ji > j0K20 \le K \le 2)。网络中没有自环(iii \to i 形式的边)。

一个「路由方案」的描述由 SS 条从发送者到接收者的有向路径组成,其中没有两条路径有相同的起止点。也就是说,这些路径将不同的发送者连接到不同的接收者。一条从发送者 ss 到接收者 rr 的路径可以用一个结点序列

s=v0v1v2ve=rs = v_0 \to v_1 \to v_2 \to \ldots \to v_e = r

表示,其中对于所有 0i<e0 \le i < e,有向边 vivi+1v_i \to v_{i+1} 均存在。一个结点可能在同一条路径中出现多于一次。

计算使得每条有向边恰好使用一次的路由方案数量。由于答案可能非常大,输出答案对 109+710^9 + 7 取模的结果。输入保证存在至少一种路由方案符合条件。

每个输入包含 TT1T201 \le T \le 20)组需要独立求解的测试用例。输入保证所有测试用例的 N2N^2 之和不超过 21042 \cdot 10^4


输入格式

输入的第一行包含 TT,为测试用例的数量。

每个测试用例的第一行包含整数 NNKK。注意 SS 并不会在输入中明确给出。

每个测试用例的第二行包含一个长为 NN 的字符串。如果第 ii 个结点是发送者,则字符串的第 ii 个字符为 S,如果第 ii 个结点是接收者则为 R,如果第 ii 个结点两者均不是则为 .。字符串中 R 的数量等于 S 的数量,且至少有一个 S

每个测试用例的以下 NN 行每行包含一个长为 NN 的 01 字符串。如果从结点 ii 到结点 jj 存在一条有向边,则第 ii 行的第 jj 个字符为 1,否则为 0。由于不存在自环,矩阵的主对角线仅包含 0。除此之外,在主对角线以下恰好有 KK1

为提高可读性,相邻的测试用例之间用一个空行隔开。


输出格式

对每个测试用例,输出每条边使用恰好一次的路由方案的数量,结果对 109+710^9 + 7 取模。输入保证对每个测试用例存在至少一种合法的路由方案。


样例 1

输入

2

8 0
SS....RR
00100000
00100000
00011000
00000100
00000100
00000011
00000000
00000000

13 0
SSS.RRRSS.RR.
0001000000000
0001000000000
0001000000000
0000111000000
0000000000000
0000000000000
0000000000000
0000000001000
0000000001000
0000000000110
0000000000000
0000000000000
0000000000000

输出

4
12

解释

对于第一个测试用例,网络中的边为 $1 \to 3, 2 \to 3, 3 \to 4, 3 \to 5, 4 \to 6, 5 \to 6, 6 \to 7, 6 \to 8$。

有四种可能的路由方案:

  • $1 \to 3 \to 4 \to 6 \to 7, 2 \to 3 \to 5 \to 6 \to 8$
  • $1 \to 3 \to 5 \to 6 \to 7, 2 \to 3 \to 4 \to 6 \to 8$
  • $1 \to 3 \to 4 \to 6 \to 8, 2 \to 3 \to 5 \to 6 \to 7$
  • $1 \to 3 \to 5 \to 6 \to 8, 2 \to 3 \to 4 \to 6 \to 7$

对于第二个测试用例,网络中的边为 $1 \to 4, 2 \to 4, 3 \to 4, 4 \to 5, 4 \to 6, 4 \to 7, 8 \to 10, 9 \to 10, 10 \to 11, 11 \to 12$。

一种可能的路由方案由如下路径组成:

  • 1451 \to 4 \to 5
  • 2472 \to 4 \to 7
  • 3463 \to 4 \to 6
  • 810128 \to 10 \to 12
  • 910119 \to 10 \to 11

总的来说,发送者 {1,2,3}\{1, 2, 3\} 可以路由到接收者 {5,6,7}\{5, 6, 7\} 的某个排列,发送者 {8,9}\{8, 9\} 可以路由到接收者 {11,12}\{11, 12\} 的某个排列,得出答案为 62=126 \cdot 2 = 12


样例 2

输入

2

5 1
SS.RR
00101
00100
10010
00000
00000

6 2
S....R
001000
000100
010001
000010
001000
000000

输出

3
1

解释

对于第一个测试用例,网络中的边为 13,15,23,31,341 \to 3, 1 \to 5, 2 \to 3, 3 \to 1, 3 \to 4

有三种可能的路由方案:

  • 1315,2341 \to 3 \to 1 \to 5, 2 \to 3 \to 4
  • 134,23151 \to 3 \to 4, 2 \to 3 \to 1 \to 5
  • 15,231341 \to 5, 2 \to 3 \to 1 \to 3 \to 4

对于第二个测试用例,网络中的边为 $1 \to 3, 2 \to 4, 3 \to 2, 3 \to 6, 4 \to 5, 5 \to 3$。

只有一种可能的路由方案:13245361 \to 3 \to 2 \to 4 \to 5 \to 3 \to 6


样例 3

输入

5

3 2
RS.
010
101
100

4 2
.R.S
0100
0010
1000
0100

4 2
.SR.
0000
0011
0100
0010

5 2
.SSRR
01000
10101
01010
00000
00000

6 2
SS..RR
001010
000010
000010
000010
100101
000000

输出

2
1
2
6
24

数据范围与提示

  • 测试点 44-55 满足 N6N \le 6
  • 测试点 66-77 满足 K=0K = 0
  • 测试点 88-1212 满足 K=1K = 1
  • 测试点 1313-2424 满足 K=2K = 2