QOJ.ac

QOJ

Time Limit: 20 s - 120 s Memory Limit: 2048 MB Total points: 23

#12506. 编程竞赛的数十年

Statistics

距离 Sphinny 成为顶尖编程选手并掌握竞赛调度艺术已经过去了近 15 年。她与编程竞赛共同成长,并转型成为一名编程竞赛组织者,她创办的编程俱乐部联盟(Programming Club League, PCL)是她所在城市最受欢迎的运动。

Sphinny 的城市中有 $N$ 个公交车站和 $M$ 条快速公交线路。每条线路双向连接两个不同的公交车站,称为它们的端点。由于 PCL 的普及,每条公交线路的司机都只为一个俱乐部加油。

Sphinny 需要在公交车站 $P_j$ 为第 $j$ 场竞赛领取竞赛材料,然后竞赛将在公交车站 $C_j$ 举行。她只能使用给定的公交线路在它们之间往返。形式上,Sphinny 从 $P_j$ 到 $C_j$ 的路径是一系列公交线路,使得每两条连续的线路都有一个公共端点。此外,路径中的第一条线路以 $P_j$ 为端点,最后一条线路以 $C_j$ 为端点。注意,同一条公交线路可以在路径中多次使用。如果 Sphinny 从 $P_j$ 到 $C_j$ 的路径包含一条或多条司机为俱乐部 $c$ 加油的公交线路,则俱乐部 $c$ 将参加该竞赛。否则,俱乐部 $c$ 将不会参加该竞赛。出于组织原因,Sphinny 需要每场竞赛参加的俱乐部数量为奇数。

给定 Sphinny 城市的公交线路布局和竞赛详情,找出有多少场竞赛存在一条路径,使得 Sphinny 可以确保参加该竞赛的俱乐部数量为奇数。

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。 每个测试用例的第一行包含三个整数 $N$、$M$ 和 $Q$:分别表示公交车站的数量、公交线路的数量和竞赛的数量。

接下来 $M$ 行,每行代表一条不同的公交线路。第 $i$ 行包含三个整数 $U_i$、$V_i$ 和 $K_i$,表示第 $i$ 条公交线路连接公交车站 $U_i$ 和 $V_i$,其司机为俱乐部 $K_i$ 加油。

最后 $Q$ 行,每行代表一场竞赛。第 $j$ 行包含两个整数 $P_j$ 和 $C_j$,表示第 $j$ 场竞赛的材料需要在公交车站 $P_j$ 领取,且竞赛需要在公交车站 $C_j$ 举行。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是 Sphinny 可以找到确保奇数个俱乐部参加的路径的竞赛数量。

数据范围

$1 \le T \le 100$ $1 \le U_i \le N$ $1 \le V_i \le N$ $U_i \neq V_i$ $(U_i, V_i) \neq (U_j, V_j)$ 且 $(U_i, V_i) \neq (V_j, U_j)$,对于所有 $i \neq j$(没有两条公交线路具有相同的端点对)。 $1 \le P_j \le N$ $1 \le C_j \le N$ $P_j \neq C_j$

样例

输入格式 1

2
5 5 3
1 2 1
2 3 2
2 4 1
2 5 1
4 5 1
1 3
3 4
5 1
3 1 2
1 3 1
1 2
1 3

输出格式 1

Case #1: 1
Case #2: 1

说明

样例 1 的情况如上图所示。在前两场竞赛中,无论选择什么路径,两个俱乐部(绿色和蓝色)都必须参加。对于最后一场竞赛,通过经过公交车站 $1, 2, 4, 5$ 的路径,可以只让绿色俱乐部参加。

对于样例 2,第一场竞赛是不可能的,因为没有从公交车站 $1$ 到公交车站 $2$ 的路径。对于第二场竞赛,存在一条包含唯一一条从公交车站 $1$ 到公交车站 $3$ 的公交线路的路径,因此产生的竞赛恰好有 $1$ 个俱乐部参加,这是一个可接受的奇数。

附加样例 - 测试集 2

以下附加样例符合测试集 2 的限制。它不会在提交的解决方案中运行。

输入格式 2

1
4 5 2
1 2 3
1 3 3
3 4 7
2 3 3
2 4 6
1 2
1 4

输出格式 2

Case #1: 2

说明

该附加样例的情况如上图所示。在这种情况下,两场竞赛都可以以奇数个俱乐部完成。图中展示了实现这一点的示例路径。

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.