#lydlx06x0B22. 国王的任务 King's Quest

国王的任务 King's Quest

题目描述

曾经有一个国王,他有 NN 个儿子。

王国中有着 NN 个漂亮的姑娘,每个王子也都有自己喜欢的对象。

每个王子喜欢的对象可能不止一个。

因为王子们都到了结婚的年纪,所以国王想让王子们娶了这 NN 个姑娘,当然每个姑娘只能嫁给一名王子。

国王请巫师为他做一个统计,他想看看儿子们都有哪些喜欢的姑娘。

就这样,巫师制作了一个清单,上面具体列出了每一个王子喜欢哪些姑娘,并给出了一套初步的配对方案。

国王看了看巫师给他列出的清单,说道:“你总结的不错,但是我并不完全满意。我希望你列出每个王子可以婚配的女子清单,可以满足每个王子对应的清单上都是他喜欢的姑娘,并且任何一个王子从自己的清单上任意选择一名姑娘作为自己的结婚对象之后,剩下的王子仍然能够从自己的清单中选择的到自己喜欢的对象,使得所有的王子都能完成和自己喜欢的姑娘配对。”

请你帮助巫师列出国王满意的清单。

输入格式

第一行包含整数 NN

接下来 NN 行,每行包含多个整数,描述了一个王子喜欢的姑娘的清单,每行的第一个整数 KK,表示王子喜欢的姑娘的数量,接下来的 KK 个整数,为这 KK 个姑娘的编号。

最后一行,包含 NN 个整数,表示初步的配对方案,第 ii 个整数表示与第 ii 个王子进行配对的姑娘编号。

输出格式

输出共 NN 行。

每行包含多个整数,描述一个王子可以婚配的女子清单,第一个整数 LL,表示王子可以婚配的姑娘的数量,接下来 LL 个整数,为这 LL 个姑娘的编号(请按升序排列)。

样例

输入样例:

4
2 1 2
2 1 2
2 2 3
2 3 4
1 2 3 4

输出样例:

2 1 2
2 1 2
1 3
1 4

样例解释

44 个王子和 44 个姑娘。

王子喜好:

  • 王子1喜欢姑娘1、2
  • 王子2喜欢姑娘1、2
  • 王子3喜欢姑娘2、3
  • 王子4喜欢姑娘3、4

初步配对方案:王子1配姑娘1,王子2配姑娘2,王子3配姑娘3,王子4配姑娘4。

要求输出每个王子可以选择的姑娘清单,使得无论他选择哪一个,剩下的王子都能找到匹配。

对于王子1,他可以选择姑娘1或姑娘2。若选姑娘1,剩下王子2可选2、王子3可选3、王子4可选4;若选姑娘2,则王子2可选1、王子3可选3、王子4可选4,都成立。所以输出1: 1,2。

同理,王子2也可选1,2;王子3只能选3(不能选2,否则王子2就没有可选的了);王子4只能选4。

数据范围

  • 1N20001 \le N \le 2000
  • 所有 KK 的总和不超过 200000200000

时空限制

  • 时间限制:1 秒
  • 空间限制:64 MB