QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB Total points: 100

#10444. 钥匙

Statistics

Adam 携带了一串挂在钥匙环上的钥匙,其中一些钥匙环可能相互连接。钥匙环是普通的钥匙环,因此可以通过沿着螺旋滑动将钥匙挂上或取下。同样地,两个钥匙环也可以连接或断开。Adam 想要把其中的一些钥匙给 Brenda。由于操作钥匙和钥匙环通常是一项繁琐的任务(而且对指甲有害),Adam 正在寻找一种方法来最小化钥匙和钥匙环的操作次数。

每一次钥匙的挂上、取下,或钥匙环的连接、断开都被视为一次操作。由于操作两个钥匙环比滑动钥匙要容易得多,我们首先希望最小化钥匙的取下和挂上次数。在钥匙操作次数相同的情况下,你需要找到钥匙环连接和断开次数最少的那种方案。

当所有操作完成后,Adam 和 Brenda 必须各自携带一个由钥匙环和钥匙组成的连通组。唯一的例外是当他们中任何一人没有任何钥匙时——在这种情况下,不需要钥匙环。每把钥匙必须恰好挂在一个钥匙环上。一些钥匙环(但不是钥匙)可以被视为剩余部分,并保持与这两个组断开连接。

下图左侧显示了由四个钥匙和三个钥匙环组成的初始配置。Adam 希望给 Brenda 标记为 N 和 R 的两把钥匙。这可以通过两次钥匙操作和一次钥匙环操作来完成,结果如图右侧所示。

输入格式

每个测试用例包含一行或多行,每行包含一个双字母字符串。小写字母 (a - z) 代表钥匙环,大写字母 (A - Z) 代表钥匙。行中的两个字母指定了一个挂在钥匙环上的钥匙,或者两个连接在一起的钥匙环。每个测试用例的结束由包含数字 0 的行表示。

字母 A 到 M 代表的钥匙由 Adam 保留,字母 N 到 Z 代表的钥匙给 Brenda。

没有一行包含两个大写字母。在同一个测试用例中,没有一对字母被指定超过一次。每把钥匙恰好连接到一个钥匙环上。钥匙环配置中没有“环”(断开任意两个钥匙环都会增加连通组的数量)。所有现有的钥匙和钥匙环至少被提及一次。

输出格式

对于每个测试用例,显示用例编号,后跟最小的钥匙挂上/取下操作次数和最小的钥匙环连接/断开操作次数。

如果无法按要求分配钥匙,则显示用例编号和单词 impossible,而不是两个整数。

样例

输入 1

ab
bc
aA
aN
Rb
cB
0
aA
bB
Cc
0
aA
aZ
0
aA
bB
cC
xX
yY
ax
xb
by
yc
0

输出 1

Case 1: 2 1
Case 2: 0 2
Case 3: impossible
Case 4: 0 7

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.