#B4388. [语言月赛 202508] 共享航班

    ID: 15582 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 3 上传者: 标签>并查集2025字符串(入门)语言月赛

[语言月赛 202508] 共享航班

题目背景

一趟航班的机票可能由多个航空公司(简称航司)销售。每一个航司在销售该航班机票时,都会给该航班一个专属于该航司的代码。例如,某趟航班由 CA 和 ZH 两家公司售票,其航班号分别为 CA1234 和 ZH4321,但是这两个航班号对应的其实指的是同一趟航班,只是不同航司对该航班的编号不同。这样的航班被称为代码共享航班。

请注意本题设定的代码共享条件、航班代码格式与生活实际略有不同,请以题目要求为准。

题目描述

扶苏获取了 nn 条航线数据,每条数据都是一个字符串,包括一趟航班的代码、出发地、目的地、起飞时间。一条数据的格式是:

CODE-DEP-DES-HH:MM

其中:

  • CODE 是该航班的代码,该代码是一个长度为 66 的字符串,前两位是字母,表示所属航司,后四位是数字,是航司给该航班的代号。同一航司的代码前两位相同,不同航司的代码前两位不同,因此可以用航班号前两位来区分和表示航司。例如 CA1234SC9876
  • DEP 是一个长度为 33 的字符串,表示飞机的出发机场代码。不同机场的代码不同,例如 PEK 表示北京首都国际机场。
  • DES 是一个长度为 33 的字符串,表示飞机的到达机场代码。不同机场的代码不同,例如 PVG 表示上海浦东国际机场。
  • HH:MM 是一个长度为 55 的字符串,HM 均是 090 \sim 9 的数字,表示起飞的小时和分钟,不足两位时补 0。例如:09:21 表示 992121 分。

下面是一个例子:

CA1501-PEK-PVG-08:30
SC5306-PEK-PVG-08:30
ZH2468-PEK-PVG-08:30
CZ1357-PEK-PVG-08:30
MU9197-SHA-TFU-08:00

依次表示:

  • CA 公司售卖的代号为 CA1501 的航班,从 PEK 飞往 PVG,起飞时间 08:30
  • SC 公司售卖的代号为 SC5306 的航班,从 PEK 飞往 PVG,起飞时间 08:30
  • ZH 公司售卖的代号为 ZH2468 的航班,从 PEK 飞往 PVG,起飞时间 08:30
  • CZ 公司售卖的代号为 CZ1357 的航班,从 PEK 飞往 PVG,起飞时间 08:30
  • MU 公司售卖的代号为 CA1501 的航班,从 SHA 飞往 TFU,起飞时间 08:00

同时,扶苏还知道有些航司之间有联盟关系,每个航司最多属于一个联盟。两条数据是共享航班当且仅当:

  • 它们的公司属于同一个联盟。
  • 它们起飞、降落机场分别相同。
  • 它们起飞时间相同。

可能有多个航班两两之间均构成代码共享关系,此时它们对应同一趟实际航班。

例如,扶苏知道 CASCZH 同属于一个联盟,而 CZ 不属于该联盟,所以上面例子里前三条是共享航班,对应同一趟实际的航班,但前三条和第四条不是共享航班。而第五条和前四条信息的起降地、时间均不同,因此也不和前四条构成代码共享关系。上面例子中共有三趟实际的航班。

已知共有 mm 个联盟,属于第 ii 个联盟的航司有 cic_i 个,其代码(航班号前缀)分别是 si,1,si,2,sm,cis_{i,1}, s_{i,2}, \dots s_{m, c_i}。同时给定 nn 条航班信息,你要求出这 nn 条信息对应了多少实际的航班。

注意:

  1. 可能有航司不属于任何联盟。
  2. 保证同一航司在同一时间、同一起降地只有至多一个航班。

输入格式

第一行是两个整数,表示信息数 nn 和联盟数 mm

接下来 mm 行,表示一个联盟的信息,按如下格式输入:

  • 首先是一个整数,表示该联盟的航司数 cic_i
  • 接下来有 cic_i 个长度为 22 的字符串,表示该联盟每个航司的代码(航班号前缀)。

接下来 nn 行,每行一个字符串,表示一条航班信息,其具体格式见【题目描述】部分。

输出格式

输出一行一个整数,表示共有多少个实际航班。

7 2
3 CA ZH SC
2 CZ MF
CA1501-PEK-PVG-08:30
CZ1357-PEK-PVG-08:30
SC5306-PEK-PVG-08:30
ZH2468-PEK-PVG-08:30
MF1357-PEK-PVG-08:30
MU9197-SHA-TFU-08:00
CA9197-SHA-TFU-08:00
4

提示

样例 1 解释

CAZHSC 三个航司属于一个联盟,CZMF 属于一个联盟,MU(在该样例中)不属于任何联盟。
数据的第 1,3,41,3,4 行是共享航班,第 2,52,5 行是共享航班,第 66 行单独是一个航班,第 77 行单独是一个航班。共 44 个实际航班。

数据规模与约定

测试点编号 nn\leq 特殊约定
11
22 100100 m=0m = 0
3,43,4 所有航司属于同一个联盟
5,65,6 所有航司均属于某一个联盟(但不一定相同)
7,87,8 输入的数据按起飞时间排序
9,109,10

对全部的测试数据,保证:

  • 1n1001 \leq n \leq 100
  • 0m,cin0 \leq m,c_i \leq n
  • 航司代码是仅含大写字母的长度为 22 的字符串。
  • 航班代码 CODE 是长度为 66 为的字符串,其中前两位是大写字母,后四位是数字。
  • DEPDES 是长度为 33 的仅含大写字母的字符串。
  • HH:MM 是一个合法的 2424 小时制时间,范围从 00:0023:59
  • 保证输入的航班号互不相同。