#P3708. [Poi96]赌博机

[Poi96]赌博机

题目描述

一个赌博机由 nn 个整数生成器组成:G1,G2,,GnG_1, G_2, \dots, G_n,其中 1n10001 \leq n \leq 1000。生成器 GiG_i 只能从某个特定的集合 SiS_i 中生成整数,集合 SiS_i 包含在区间 {1,,n}\{1, \dots, n\} 内,或者生成 00,表示游戏结束。SiS_i 可能是空集合。设 kik_i 为集合 SiS_i 的元素个数,所有的 kik_i 之和(i=1,,ni = 1, \dots, n)不能超过 1200012000

GiG_i 第一次激活时,它会从集合 SiS_i 中生成一个整数。下次激活时,会从集合 SiS_i 中生成一个尚未选过的整数。如果没有未选过的整数,则 GiG_i 会生成 00

机器的激活顺序如下:

  • G1G_1 开始激活。
  • 如果生成了一个正整数 rr,下一个激活的生成器是 GrG_r
  • 如果生成了 00,机器停止。

如果机器在 GnG_n 生成 00 且其余生成器的集合已经耗尽,则机器失败。

如果机器能够生成一个以 00 结束的整数序列,并且不导致失败(即序列长度小于 1+i=1nki1 + \sum_{i=1}^{n} k_i),则该机器是“良构”的。

  • 如果机器是良构的,输出一个可以被机器生成的整数序列,序列以 00 结束,并且不会导致失败。
  • 如果不是,输出一个单词 "NIE"(波兰语中的“不”)到文本文件 HAZ.OUT

输入格式

第一行给出机器的个数,即生成器的数量 nn 接下来N行,每行先给出整数 kik_i,然后给出集合 SiS_i

输出格式

验证机器是否是良构的

如果机器是良构的,输出一个可以被机器生成的整数序列,序列以 00 结束,并且不会导致失败。

如果不是,输出一个单词 "NIE"(波兰语中的“不”)到文本文件 HAZ.OUT

2
2 1 2
1 2
2 2 0
2
1 2
0
NIE