#C1015. 分组
分组
【题目描述】
一个班级里有 个人,第 个人有最好的朋友 (),和性别 ()。
一次活动老师希望将学生分成两两一组,每一组由一个人和他的最好的朋友组成。显然这可能无法实现,但是老师还是希望划分出最多的组。在划分出最多的组的前提下,老师还希望异性的组尽可能多。
请回答最多的组数及在最多组数的前提下的最多异性组数,并输出方案。
【输入格式】
从 friend.in 读入数据。
输入的第一行一个整数 。
输入的第 () 行两个整数 ,。
【输出格式】
输出数据到 friend.out。
第一行两个整数 ,。 表示分的组数, 表示最多的异性组数。
接下来 行,每行两个整数表示一组两个人的编号。
如果有多种方案,输出任意一种即可。
【样例 1 输入】
5
5 2
3 2
5 1
2 1
4 2
【样例 1 输出】
2 2
5 3
4 2
【样例 2】
见选手目录下的 friend/friend2.in 与 friend/friend2.ans。
该样例满足测试点 的约束条件。
【样例 3】
见选手目录下的 friend/friend3.in 与 friend/friend3.ans。
该样例满足测试点 的约束条件。
【样例 4】
见选手目录下的 friend/friend4.in 与 friend/friend4.ans。
该样例满足测试点 的约束条件。
【数据范围】
对于 的数据,,,,
| 测试点编号 | 特殊性质 | |
|---|---|---|
| 无 | ||
| 无 |
【提示】
提供了 checker.cpp,保证与评测使用的完全不同,不保证能成功判断你的代码正误,你需要通过如下指令使用,正确会说AC,错误我也不知道会说什么。
编译:g++ checker.cpp -o checker -std=c++14 -Wall -O2
运行:./checker friend.in friend.out friend.ans