#P15071. [UOI 2024 II Stage] Matches
[UOI 2024 II Stage] Matches
说明
Anton 发明了一项名为水球(类似彩弹,但用水)的新团队运动。他想与他的 个朋友分享这项发明。Anton 与所有朋友关系都很好,但不能保证他的朋友们彼此之间关系同样融洽。具体来说,我们知道编号为 的朋友与编号为 的朋友存在冲突。
Anton 得到了一个包含 个冲突对 () 的列表。现在,看似可以将玩家分成两队,但对 Anton 来说并不那么简单……
他想要将这些 个冲突对划分成若干段,使得:
- 每个冲突对恰好属于一段;
- 仅考虑每段内的冲突关系时,可以将所有人分成两队,使得同一队中没有两个相互冲突的人。
例如,假设我们有冲突对数组 。我们可以将前两个对放在第一段。此时,可以组成队伍: 和 。在第二段中,我们可以取最后一个对。 和 必须分在不同队伍, 可以在任意一队。或者,我们可以将第一个对分配给第一段,最后两个对分配给第二段。注意,我们不能将第一个和第三个对放在同一段,而将第二个对放在另一段,因为一段应当只包含连续的冲突对。我们也不能将所有对放在同一段,因为那样总会存在一个队伍中有相互冲突的人。
Anton 又把问题描述复杂化了,现在他自己无法解决这个问题。请帮助他,告诉他满足上述条件时,最少可以将这些对划分成多少段。
输入格式
- 第一行包含两个整数 、()——朋友数量和冲突关系数量。
- 接下来的 行,每行包含两个整数 、(,),表示朋友 与朋友 存在冲突。
保证任何冲突对 () 不会重复出现。
输出格式
输出一个整数——问题的答案。
3 3
1 2
2 3
1 3
2
5 10
2 4
1 2
3 4
1 3
1 5
4 5
2 3
3 5
1 4
2 5
3
提示
第一个示例已在题目描述中解释。
在第二个示例中,例如可以划分成以下三段:、、。
- 在第一段中,可以组成队伍 和 —— 和 不冲突,且 、、 也不冲突。
- 在第二段中,可以组成队伍 和 —— 和 不冲突,且 、、 也不冲突。
- 在第三段中,可以组成队伍 和 —— 和 不冲突,且 、、 也不冲突。
评分细则
- ( 分):;
- ( 分):;
- ( 分):;
- ( 分):输入中的冲突对随机生成;这意味着从所有 个对中随机选择了 个对;
- ( 分):每个人冲突的对象不超过 个;
- ( 分):;
- ( 分):;
- ( 分):无额外限制。
翻译由 DeepSeek V3 完成
京公网安备 11011102002149号