#lydlx06x0B14. 将他们分好队 Team Them Up!

将他们分好队 Team Them Up!

题目描述

你的任务是以下列方式将一些人分成两个小队:

  1. 每个人都属于其中一个团队;
  2. 每个团队至少有一名成员;
  3. 团队中的每个人都认识团队中的每个人(即每个团队内部是完全图关系);
  4. 团队的规模尽可能接近(即两个团队的人数差尽可能小)。

此任务可能有许多解决方案,你可以输出任何一种解决方案,或声明解决方案不存在。

输入格式

第一行包含整数 NN,表示共有 NN 个人,他们被编号为 1,2,,N1, 2, \dots, N

接下来 NN 行,第 ii 行包含多个用空格分隔开的整数,表示编号为 ii 的人认识的人的编号列表,最后以 00 结尾。

注意 AA 认识 BB 不代表 BB 一定认识 AA

输出格式

如果不存在解决方案,则输出 No solution

如果存在,则输出两个队伍的成员信息,每个队伍占一行,首先输出队伍的人数,然后依次输出队伍成员的编号。

样例

输入样例:

5
2 3 5 0
1 4 5 3 0
1 2 5 0
1 2 3 0
4 3 2 1 0

输出样例:

3 1 3 5
2 2 4

样例解释

55 个人:

  • 1 认识 2,3,5
  • 2 认识 1,4,5,3
  • 3 认识 1,2,5
  • 4 认识 1,2,3
  • 5 认识 4,3,2,1

一种可行分法: 队伍1:1,3,5(这些人互相都认识:1认识3和5,3认识1和5,5认识1和3) 队伍2:2,4(2认识4吗?2认识4,4认识2吗?4认识2) 满足每个队伍内部是完全图,且两队人数差为 32=1|3-2|=1,是可能的最小差。

数据范围

  • 2N1002 \leq N \leq 100

时空限制

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