P15190 [SWERC 2019] Swapping Places

题目描述

动物们在一个隔离区排队,等待进入一个禁止狩猎的区域,那里它们将过上更轻松的生活。 进入隔离区时,动物必须向一名守卫登记。守卫记下动物的物种,然后该动物被允许加入队伍的末尾,即最后一位。在队伍的另一端,动物必须登记离开:当队伍中第一位的动物最终被允许进入禁止狩猎区时,另一名守卫记下该动物的物种。因此,每名守卫都维护着一个动物物种列表,按照动物登记进入或离开的时间顺序记录。总共有 $N$ 只动物,代表 $S$ 个物种,进行了登记进入(因此也登记离开)。 然而,动物进入等待队伍和离开的顺序可能不同。实际上,某些动物物种彼此是朋友,因此如果两个属于此类物种的动物在队伍中占据相邻位置,它们可能会同意交换位置。 你有一个这样的动物物种对的列表,这些物种对在队伍中相邻时可能会同意交换位置:该列表包含 $L$ 对物种。你拿到了第一名守卫维护的登记进入列表。根据哪些动物决定交换位置,可能有多个登记离开列表。在所有可能的列表中,按字典序排列,哪一个是最靠前的?

输入格式

输入包含以下行: - 第 1 行包含三个空格分隔的整数 $S$、$L$ 和 $N$。$S$ 是动物物种的数量,$L$ 是彼此是朋友的物种对的数量,$N$ 是进入等待队伍的动物数量。 - 对于 $0 \leq i < S$,第 $i+2$ 行包含一个所代表物种的名称:该名称由单个单词组成,仅包含大写字母 “A” 到 “Z”,且长度在 1 到 20 个字母之间。 - 对于 $0 \leq i < L$,第 $i+S+2$ 行包含两个空格分隔的物种名称 $A$ 和 $B$,表示 $A$ 和 $B$ 彼此是朋友。 - 第 $S + L + 2$ 行代表登记进入列表,包含 $N$ 个空格分隔的物种名称:对于所有 $1 \leq k \leq N$,第 $k$ 个单词是第 $k$ 个进入队伍的动物的物种名称。

输出格式

输出应包含一行,包含 $N$ 个单词 $w_0, \ldots, w_{N-1}$,以空格分隔:列表 $w_0, \ldots, w_{N-1}$ 必须是所有可能的登记离开列表中按字典序排列最靠前的那一个。

说明/提示

#### 样例解释 登记离开时可能的六种顺序,按字典序(递增)排列如下: 1. `ANT ANTILOPE CAT CAT CAT ANT` 2. `ANT CAT ANTILOPE CAT CAT ANT` 3. `ANT CAT CAT ANTILOPE CAT ANT` 4. `ANT CAT CAT CAT ANT ANTILOPE` 5. `ANT CAT CAT CAT ANTILOPE ANT` 6. `ANTILOPE ANT CAT CAT CAT ANT` #### 数据范围 - $1 \leq S \leq 200$; - $0 \leq L \leq 10\,000$; - $1 \leq N \leq 100\,000$。 翻译由 DeepSeek 完成