National Instruments 面试经历 |设置 2
星际贸易:
Hober Mallow 想要建立一个星际贸易,允许不同行星之间的贸易。每个星球都有自己的一套交易货币。由于货币太多,霍伯决定宣布一套 M 种货币(编号从 1 到 M)作为可用于行星间交易的官方货币。当且仅当两个行星拥有共同的官方货币,或者存在另一个行星与这些行星中的每一个共享共同的官方货币时,它们才能进行交易。例如,假设 A 星球有货币 - 1、3、4,B 星球有 5、6 种货币,C 星球有 6、4。星球 A 和 B 仍然可以通过 C 星球进行交易(星球 A -> C 通过货币 4,然后行星 C -> B 通过货币 6,反之亦然)。这种类型的交易也可以通过多个行星作为中介来完成(即行星 X 和 Y 可以通过 A、B、C 进行交易,如果 XA 共享一种共同货币,AB 共享一种共同货币,BC 共享一种共同货币,并且最后CY分享一些共同的货币)。 Hober 观察到即使有这些规则,也有一些行星没有官方货币或行星组不与其他行星组共享任何货币。为了实现所有星球之间的贸易,他必须为每个没有官方或共同官方货币的星球实施新货币系统。实施一个新的货币系统花费了他每个星球 1 个铂金单位。你必须帮助霍伯将实现所有星球之间贸易的成本降到最低。
您将获得 N (2 <= N <= 50),这表示希望成为星际贸易一部分的行星数量。您将得到 M (2 <= M <= 50),表示从 1 到 M 编号的官方货币数量。接下来是 N 行,每行包含一个数字 Ci,即星球 i 支持的官方货币数量,其次是为第 i 个星球进行交易的 C 种货币。您必须输出在所有星球上进行贸易所需的铂金单位数量。
示例输入
5 5
1 2
2 2 3
2 3 4
2 4 5
1 5
5 5
0
3 4 1 5
2 3 4
0
1 2
预期产出
0
行星 #1 和 #2 可以通过货币 2 进行交易。行星 #2 和 #3 可以通过货币 3 进行交易。行星 #3 和 #4 可以使用 4 进行交易。行星 #4 和 #5 可以使用货币 5 进行交易。这使得它可以通过零个或多个中间行星在任何两个行星之间进行交易。因此无需设置新货币,因此成本为 0。
3
行星 #2 和 #3 可以通过货币 4 进行交易,但行星 #1、#4 和 #5 彼此不共享任何货币或与 #2 和 #3 共享任何货币,因此不能与其他任何人进行交易。行星#2 或#3 中的一种货币可以设置在行星#1、#4 和#5 中,这将使所有行星之间的贸易成为可能。由于必须在 3 个不同的行星上设置货币,因此成本为 3。
示例输入和输出
测试用例输入输出下载链接运行链接(同时保存代码)
1
5 5
1 2
2 2 3
2 3 4
2 4 5
1 5
0
下载输入文件运行代码
2
5 5
0
3 4 1 5
2 3 4
0
1 2
3
下载输入文件运行代码
每个测试用例的时间限制:
2 秒
如果您有一台装有 GCC/G++ 的机器并想离线工作,请在此处下载模板并提交
代码模板:
C 模板:Trade.c
C++ 模板:Trade.cpp