CF754C Vladik and chat
题目描述
最近,Vladik 发现了一项新娱乐——为社交网络编写聊天机器人。他希望在自己的机器人中使用机器学习,因此现在需要为它们准备一些学习数据。
首先,他需要下载 $t$ 个聊天记录。Vladik 编写了一个脚本应该可以下载这些聊天记录,但出现了一些问题。特别是,有些消息没有记录发送者的信息。已知如果某个人连续发送几条消息,这些消息会被合并为一条消息。这意味着不可能出现两个或更多连续消息由同一发送者发送的情况。此外,发送者永远不会在自己的消息中提到自己。
Vladik 希望恢复所有消息的发送者,使得每两个相邻的消息有不同的发送者,并且没有发送者会在自己的消息中提到自己。
他不知道如何操作,所以请求你帮助他。请你帮 Vladik 恢复每个聊天记录中所有消息的发送者!
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 10$),表示聊天记录的数量。接下来有 $t$ 组聊天记录。每组聊天记录的格式如下:
每组聊天记录的第一行包含一个整数 $n$($1 \leq n \leq 100$),表示本次聊天的用户数量。
下一行包含 $n$ 个以空格分隔的不同用户名。每个用户名由大小写英文字符和数字组成,用户名不能以数字开头。两个用户名即使只有字母大小写不同也视为不同。用户名长度为正且不超过 $10$ 个字符。
下一行为一个整数 $m$($1 \leq m \leq 100$),表示该聊天中的消息数量。之后 $m$ 行,每行一条消息,消息格式如下:
- : —— 已知发送者的消息格式,username 必须在当前聊天的用户名列表中。
- : —— 未知发送者的消息格式。
消息正文可包含小写和大写英文字母、数字、'.'(点)、','(逗号)、'!'(感叹号)、'?'(问号)和' '(空格)。消息文本中无尾随空格,长度为正且不超过 $100$。
我们认为消息正文“提到”一个用户,是指该用户名在正文中作为单词单独出现。也就是说,用户名前后的两个字符如果有的话,均不能是英文字母或数字。例如,文本 "Vasya, masha13 and Kate!" 可以提到用户 "Vasya"、"masha13"、"and" 和 "Kate",但不会提到 "masha"。
保证每组聊天记录中,已知发送者不会在其消息正文中提到自己,且不会有两个相邻的消息由同一已知发送者发出。
输出格式
请按照如下格式输出 $t$ 组聊天的结果:
如果无法恢复所有消息的发送者,则该聊天输出一行 "Impossible"。
否则,输出 $m$ 条消息,每条格式如下:
:
如有多种解答,输出任意一种均可。
说明/提示
由 ChatGPT 5 翻译