QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 256 MB 總分: 100

#2023. 路由方案

统计

考虑一个包含 $N$ ($2\le N\le 100$) 个节点的网络,节点编号为 $1\ldots N$。每个节点被指定为发送方、接收方或两者皆非。发送方的数量 $S$ 等于接收方的数量 ($S\ge 1$)。

网络中节点之间的连接由一系列有向边描述,每条边形式为 $i\to j$,表示节点 $i$ 可以路由到节点 $j$。有趣的是,除了 $K$ 条满足 $i>j$ 的边之外,所有边都满足 $i

“路由方案”的描述由一组从发送方到接收方的 $S$ 条有向路径组成,使得这 $S$ 条路径中没有两条路径共享一个端点。也就是说,这些路径连接了不同的发送方到不同的接收方。从发送方 $s$ 到接收方 $r$ 的路径可以描述为节点序列

$$s=v_0\to v_1 \to v_2\to \cdots \to v_e=r$$

使得对于所有 $0\le i

计算满足每条有向边恰好被遍历一次的路由方案总数。由于答案可能非常大,请输出其对 $10^9+7$ 取模的结果。题目保证至少存在一种满足这些约束的路由方案。

每个输入包含 $T$ ($1\le T\le 20$) 个测试用例,应独立求解。保证所有测试用例的 $N^2$ 之和不超过 $2\cdot 10^4$。

输入格式

第一行包含 $T$,即测试用例的数量。

每个测试用例的第一行包含整数 $N$ 和 $K$。注意 $S$ 不会在输入中显式给出。

每个测试用例的第二行包含一个长度为 $N$ 的字符串。如果第 $i$ 个节点是发送方,则字符串的第 $i$ 个字符为 S;如果是接收方,则为 R;如果两者皆非,则为 .。字符串中 R 的数量等于 S 的数量,且至少存在一个 S。

接下来的 $N$ 行,每行包含一个长度为 $N$ 的由 0 和 1 组成的位串。如果存在从节点 $i$ 到节点 $j$ 的有向边,则第 $i$ 行的第 $j$ 位为 1,否则为 0。由于不存在自环,矩阵的主对角线全为 0。此外,主对角线下方恰好有 $K$ 个 1。

连续的测试用例之间用换行符分隔,以提高可读性。

输出格式

对于每个测试用例,输出满足每条边恰好被遍历一次的路由方案数量,对 $10^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

样例输出 1

4
12

样例输入 2

2

5 1
SS.RR
00101
00100
10010
00000
00000

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

样例输出 2

3
1

样例输入 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

样例输出 3

2
1
2
6
24

子任务

  • 测试用例 4-5 满足 $N\le 6$。
  • 测试用例 6-7 满足 $K=0$。
  • 测试用例 8-12 满足 $K=1$。
  • 测试用例 13-24 满足 $K=2$。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.