#P1270. Following Orders
Following Orders
描述
顺序在数学和计算机科学中是一个重要的概念。例如,佐恩引理指出:“每一个链都有上界的偏序集包含一个极大元。” 顺序在关于程序的不动点语义的推理中也很重要。
这个问题既不涉及佐恩引理也不涉及不动点语义,但确实涉及顺序。
给定一个形如 的变量约束列表,你需要编写一个程序,打印出所有与这些约束一致的变量顺序。
例如,给定约束 和 ,对于变量 、 和 ,有两种与这些约束一致的顺序: 和 。
输入
输入由一系列约束规范组成。一个规范由两行组成:一行是变量列表,下一行是约束列表。一个约束由一对变量给出,其中 表示 。
所有变量都是单个小写字母。一个规范中至少有两个变量,且不超过 20 个变量。一个规范中至少有一个约束,且不超过 50 个约束。一个规范中与约束一致的顺序至少有一个,且不超过 300 个。
输入以文件结束符终止。
输出
对于每个约束规范,应打印出所有与约束一致的顺序。顺序按字典序(字母序)打印,每行一个。
不同约束规范的输出之间用一个空行分隔。
输入数据 1
a b f g
a b b f
v w x y z
v y x v z v w v
输出数据 1
abfg
abgf
agbf
gabf
wxzvy
wzxvy
xwzvy
xzwvy
zwxvy
zxwvy
来源
1993 年杜克大学互联网编程竞赛,uva 124