#P15071. [UOI 2024 II Stage] Matches

    ID: 15103 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>贪心并查集2024二分图UOI(乌克兰)

[UOI 2024 II Stage] Matches

说明

Anton 发明了一项名为水球(类似彩弹,但用水)的新团队运动。他想与他的 nn 个朋友分享这项发明。Anton 与所有朋友关系都很好,但不能保证他的朋友们彼此之间关系同样融洽。具体来说,我们知道编号为 aia_i 的朋友与编号为 bib_i 的朋友存在冲突。

Anton 得到了一个包含 mm 个冲突对 (ai;bia_i;b_i) 的列表。现在,看似可以将玩家分成两队,但对 Anton 来说并不那么简单……

他想要将这些 mm 个冲突对划分成若干段,使得:

  • 每个冲突对恰好属于一段;
  • 仅考虑每段内的冲突关系时,可以将所有人分成两队,使得同一队中没有两个相互冲突的人。

例如,假设我们有冲突对数组 [(1,2),(2,3),(1,3)][(1, 2), (2, 3), (1, 3)]。我们可以将前两个对放在第一段。此时,可以组成队伍:[1,3][1, 3][2][2]。在第二段中,我们可以取最后一个对。1133 必须分在不同队伍,22 可以在任意一队。或者,我们可以将第一个对分配给第一段,最后两个对分配给第二段。注意,我们不能将第一个和第三个对放在同一段,而将第二个对放在另一段,因为一段应当只包含连续的冲突对。我们也不能将所有对放在同一段,因为那样总会存在一个队伍中有相互冲突的人。

Anton 又把问题描述复杂化了,现在他自己无法解决这个问题。请帮助他,告诉他满足上述条件时,最少可以将这些对划分成多少段。

输入格式

  • 第一行包含两个整数 nnmm1n,m1061 \le n, m \le 10^6)——朋友数量和冲突关系数量。
  • 接下来的 mm 行,每行包含两个整数 aia_ibib_i1ai,bin1 \le a_i, b_i \le naibia_i \neq b_i),表示朋友 aia_i 与朋友 bib_i 存在冲突。

保证任何冲突对 (a;ba;b) 不会重复出现。

输出格式

输出一个整数——问题的答案。

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

提示

第一个示例已在题目描述中解释。

在第二个示例中,例如可以划分成以下三段:[1;6][1;6][7;9][7;9][10;10][10;10]

  • 在第一段中,可以组成队伍 [1,4][1,4][2,3,5][2,3,5] —— 1144 不冲突,且 (2;3)(2;3)(2;5)(2;5)(3;5)(3;5) 也不冲突。
  • 在第二段中,可以组成队伍 [1,3][1,3][2,4,5][2,4,5] —— 1133 不冲突,且 (2;4)(2;4)(2;5)(2;5)(4;5)(4;5) 也不冲突。
  • 在第三段中,可以组成队伍 [1,2][1,2][3,4,5][3,4,5] —— 1122 不冲突,且 (3;4)(3;4)(3;5)(3;5)(4;5)(4;5) 也不冲突。

评分细则

  • 44 分):n3n \le 3
  • 77 分):n10n \le 10
  • 1515 分):n,m5000n, m \le 5000
  • 1313 分):输入中的冲突对随机生成;这意味着从所有 n(n1)2\frac{n (n-1)}{2} 个对中随机选择了 mm 个对;
  • 1414 分):每个人冲突的对象不超过 1010 个;
  • 1919 分):n105n \le 10^5
  • 1717 分):n2105n \le 2 \cdot 10^5
  • 1111 分):无额外限制。

翻译由 DeepSeek V3 完成