约束排列

约束排列

问题描述:
给出n 个互不相同的小写字母,表示出现的字符类型,以及k 个约束关系:<a1 b1> <a2
b2> <a3 b3>.....<ak bk>,表示ai 必须出现在bi 前面(ai,bi 不会超出所给字符类型的范围,且
ai!=bi)。
请按照字典序输出所有满足约束条件的序列。
如:
n=3,字符类型为:x y z
k=1,约束条件为:x z,表示x 必须出现在z 的前面。
所有满足约束条件的排列有:
xyz
xzy
yxz
输入:
第1 行,2 个整数n 和k。
第2 行,n 个空格隔开的字符。
接下来k 行,每行二个字符ai 和bi(表示约束关系),数据保证不会出现矛盾的关系。
输出:
若干行,每行n 个字符(字符之间没有空格),表示排列的结果。
样例输入:
3 1
x y z
x z
样例输出:
xyz
xzy
yxz
数据范围:
对于100%的数据:1<n<9,1≤k≤8。