安全网络问题

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

在一个网络中,我们称服务器S是关键服务器,如果至少有另两部不同的服务器A和B,而A和B之间的所有联络都通过S。即若S崩溃,则A和B之间不能进行通讯。如果一个网络不包含关键服务器,则称它是安全的。服务器间所有的联络都是双向的,且一个服务器不允许直接与它自身相连。网络中可以存在单机和子网。

要求写一个程序,找出一个给定网络的分割,使其拥有数量最少的安全子网。

Input

输入的第一行只包含一个正整数n,表示网络中服务器的台数。
以下有n行,每行表示一个服务器的连接状况。在每行中,第1个数k表示是第k号服务器,0<=k<=n-1;第2个数是用括号括起来的(该数与括号之间没有空格),表示与该服务器直接相连的服务器的数目;剩下的是与该服务器直接相连的服务器的号数。
服务器的号数是用0到n-1的整数表示;相邻数据之间至少用一个空格分隔。

Output

第1行表示安全子网的最少个数。以下每行代表一个子网,每个子网内的服务器按号数升序排列,每个服务器号数间用单个空格分隔。按每个子网中最小服务器的号数,由小至大排列子网。

Sample Input

8
0 (1) 1
1 (3) 2 0 3
2 (2) 1 3
3 (3) 1 2 4
4 (1) 3
7 (1) 6
6 (1) 7
5 (0)

Sample Output

5
0 1
1 2 3
3 4
5
6 7

Hint

Source