30067 - 概念编排

现在要编写一本图论的书。图论里的术语特别多,为了使读者尽快进入图论算法层次,而不是停留在概念层面上,编者希望把图论术语分布到各章(而不是集中在第 1 章介绍),并且是尽可能迅速地引入各个术语。例如,第 9 章涉及平面图、图的顶点着色等术语,这些术语在前面的章节里并没有涉及,所以可以在第 9 章介绍。但是,如果 A, B 两个术语有依赖关系,要介绍 B,必须先介绍 A,这时可能不得不提前引入术语 A

假设有 N 个术语,这本书有 M 章(第 1 章~第 M 章)。已知第 i 个术语必须在第 C_i 章之前(含第 C_i 章)介绍。术语之间有 R 对依赖,这些依赖关系也是已知的。请你帮助作者安排每章要介绍哪些术语,保证每个术语都尽可能迅速地引入。

样例数据所描绘的术语,依赖关系如下图所示(有向边<A,H>表示术语A必须在术语H之前引入),每个术语旁边的数字表示C_i,注意测试数据保证根据术语之间的依赖关系构成的有向图不存在有向回路。

输入

输入文件包含多个测试数据。每个测试数据的第 1 行为 3 个整数 N, MR1 \le N \le 261 \le M \le 101 \le R \le 50),这 N 个术语用字母表前 N 个大写字母表示,序号为 1 \sim N

接下来一行 N 个整数,第 i 个整数 C_i 表示第 i 个术语必须在第 C_i 章之前(含第 C_i 章)介绍,1 \le C_i \le M

接下来有 R 行,描述了 R 对依赖关系,每行为两个字符(设为 AB),表示术语 A 必须在术语 B 引入之前引入(可以在同一章引入)。

输入文件的最后一行为 0 0 0,表示输入结束。

输出

对每个测试数据,输出 M 行。第 i 行先输出一个整数 T_i(可能为 0),表示将在第 i 章引入 T_i 个术语,然后是一个空格(如果 T_i 为 0,则没有空格,也没有后面的字母字符),空格之后是 T_i 个大写字母字符,代表在第 i 章引入的术语(按字典序排列)。

每个测试数据的输出之后输出一个空行。

样例

输入

9 3 11
1 1 3 2 2 1 3 2 3
AC
AH
BC
BD
BE
CD
DF
DG
EF
HI
IG
0 0 0

输出

6 ABCDEF
1 H
2 GI

提示

  • 1 \le N \le 26
  • 1 \le M \le 10
  • 1 \le R \le 50
  • 1 \le C_i \le M
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题