P2175 小Z的游戏分队

    • 47通过
    • 169提交
  • 题目提供者 LittleZ
  • 评测方式 云端评测
  • 标签 图论 高性能
  • 难度 省选/NOI-
  • 时空限制 1000ms / 128MB

题解

  • 提示:收藏到任务计划后,可在首页查看。
  • 最新讨论 显示

    推荐的相关题目 显示

    题目描述

    小Z受不了寂寞,准备举办一次DOTA比赛,为了能让ACM班全部都参加比赛,他还特制了一张DOTA地图能够支持任意多人打任意多人。

    现在问题来了,怎么把这么多人分成两队?小Z的想法是,每个人报上自己愿意同队的同学,接着小Z会按如下要求将所有人分为两队:

    对任意同学甲,和同学甲同队的人,必须都是同学甲愿意同队的同学。

    小Z希望两队的人数差尽量小,如果这种分组不存在,那么输出No solution。

    输入输出格式

    输入格式:

    第1行为N,表示一共有多少个学生。

    之后2~N+1行,每行表示这个学生信任的同学的名单,以0结束。

    输出格式:

    1行,如果解存在,输出两队的人数,将人数比较小的那队放在前面;如果解不存在,输出No solution。

    输入输出样例

    输入样例#1: 复制
    5
    3 4 5 0
    1 3 5 0
    2 1 4 5 0
    2 3 5 0
    1 2 3 4 0
    输出样例#1: 复制
    No solution
    输入样例#2: 复制
    5
    2 3 5 0
    1 4 5 3 0
    1 2 5 0
    1 2 3 0
    4 3 2 1 0
    输出样例#2: 复制
    2 3

    说明

    【数据规模】

    对于 30% 的数据,N<=10;

    对于 100% 的数据,N<=2000。

    提示
    标程仅供做题后或实在无思路时参考。
    请自觉、自律地使用该功能并请对自己的学习负责。
    如果发现恶意抄袭标程,将按照I类违反进行处理。