#3559. 【国庆集训 Day2D】分组
【国庆集训 Day2D】分组
题面描述
有 个人,其中有一些人是朋友。朋友关系是双向的。
现在你需要将 个人分成若干组,满足以下两个条件:
- 每组最多 个人。
- 对于每一组,最多有 对朋友满足其中一个人在该组内,另一个人在该组外。
现在每个人都会告诉你他的朋友有哪些,你需要判断是否有人记错了。
更清晰的表述是:给定每个人的朋友集合,你需要判断朋友关系是否是双向的,并且有合法的分组条件。如果是双向的且有合法的分组方案,则输出任意一种合法的分组方案。否则输出 NO。
输入格式
第一行三个整数分别表示 。
接下来 行,对于第 行,第一个整数 表示第 个人的朋友集合。接下来 个整数表示他的 个朋友。
注意:人从 开始标号。
输出格式
如果朋友不是双向的或不存在合法分组,输出 NO。
否则第一行输出 YES。第二行输出一个整数 表示组数。接下来 行,每行表示一组。第一个数表示组的大小,接下来若干个数为该组内学生的编号。
注意:如果有多组合法方案,输出任意一种
4 2 1
1 1
2 0 2
2 1 3
1 2
YES
2
2 0 1
2 2 3
5 2 1
1 1
2 0 2
2 1 3
2 2 4
1 3
NO
3 3 3
2 1 2
2 0 2
1 0
NO
数据范围与约定
对于 的数据,保证 。
保证每个人的朋友集合中不会有他自己。
本题采用捆绑测试。
子任务 ( 分):。
子任务 ( 分):。
子任务 ( 分):。
子任务 ( 分):无特殊限制。