#P16860. [GKS 2021 #F] Graph Travel

[GKS 2021 #F] Graph Travel

题目描述

Ada 住在一个魔法国家 AA,她在魔法大学学习。今天,Ada 想在一个特殊空间中收集魔法点。

这个空间有 NN 个房间(编号 0,1,,N10, 1, \ldots, N - 1)。有 MM 条走廊连接这些房间。走廊 jj 连接房间 XjX_jYjY_j,即你可以在两个房间之间移动。

ii 个房间包含 AiA_i 个魔法点,并且受到一个具有属性 LiL_iRiR_i 的魔法护盾的保护。要进入第 ii 个房间,首先你需要通过已经破盾的房间到达与第 ii 个房间相邻的任意房间(即通过走廊相连的房间)。然后你必须打破该房间的护盾,但只有当你的魔法点数在 LiL_iRiR_i 之间(包含两端)时,你才能打破护盾。打破护盾后,你将进入该房间并自动收集该房间的 AiA_i 个魔法点。房间不会生成新的魔法点。护盾被打破后也不会再生,因此无论你当前有多少点数,你都可以自由返回所有已经破盾的房间。

Ada 开始时拥有 00 个魔法点,她的目标是找到一种方法恰好收集 KK 个魔法点。她可以在任意房间开始,也可以在任意房间结束。她选择的起始房间的魔法护盾会自动被打破,并且她会自动收集该房间的所有魔法点。

在查看了房间和走廊的地图后,Ada 认为任务太简单了,因此她想挑战一个更困难的任务:她想知达到目标有多少种不同的方式。如果两条路径的唯一路径不同,则认为它们是不同的。唯一路径是指她打破护盾的房间顺序(去除重复),例如:如果你按顺序访问房间 (1,3,2,1,3,5,3,6)(1, 3, 2, 1, 3, 5, 3, 6),则唯一路径为 (1,3,2,5,6)(1, 3, 2, 5, 6)

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。

每个测试用例的第一行包含三个整数 NNMMKK:房间的数量、走廊的数量以及要收集的魔法点数。

接下来的 NN 行,每行包含三个整数 LiL_iRiR_iAiA_i:第 ii 个房间的魔法护盾属性 LiL_iRiR_i,以及该房间的魔法点数 AiA_i

接下来的 MM 行,每行包含两个整数 XjX_jYjY_j:走廊 jj 连接的两个房间。

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是收集 KK 个魔法点的方式数量。

3
4 3 3
1 3 1
1 1 1
2 4 1
2 3 1
0 1
1 2
2 3
4 5 3
1 3 1
1 1 1
2 4 1
2 3 1
0 1
1 2
2 3
3 0
0 2
4 1 2
0 4 1
0 4 1
0 4 2
0 4 2
0 1
Case #1: 4
Case #2: 8
Case #3: 4

提示

在第一个测试用例中,有 44 种不同的方式,如下图所示:

:::align{center} :::

在第二个测试用例中,有 88 种不同的方式,如下图所示:

:::align{center} :::

在第三个测试用例中,有 44 种不同的方式,如下图所示:

:::align{center} :::

限制条件

1T1001 \le T \le 100

0MN×(N1)20 \le M \le \frac{N \times (N-1)}{2}

0Xj,YjN10 \le X_j, Y_j \le N - 1

XjYjX_j \ne Y_j

每对房间之间至多有一条走廊。

测试集 1

1N81 \le N \le 8

1K1001 \le K \le 100

0LiRi500 \le L_i \le R_i \le 50

1Ai501 \le A_i \le 50

测试集 2

1N151 \le N \le 15

1K2×1091 \le K \le 2 \times 10^9

0LiRi1090 \le L_i \le R_i \le 10^9

1Ai1091 \le A_i \le 10^9

翻译由 DeepSeek V4 Pro 完成