#ATarc126b. [ARC126B] Cross-free Matching

[ARC126B] Cross-free Matching

题目描述

在坐标平面上,有 2N2N 个顶点,其 xx 坐标为 1,2,,N1, 2, \ldots, Nyy 坐标为 0011,即顶点为 (1,0),,(N,0),(1,1),,(N,1)(1, 0), \ldots, (N, 0), (1, 1), \ldots, (N, 1)。在这些顶点中,有 MM 条线段,每条线段 ii 连接 (ai,0)(a_i, 0)(bi,1)(b_i, 1)

你需要从这 MM 条线段中选出 KK 条,使得任意两条被选中的线段都没有公共点(即没有公共端点)。请注意,线段的两个端点也算作线段包含的点。请你求出可能选出的 KK 的最大值。

输入格式

输入通过标准输入给出,格式如下:

NN MM
a1a_1 b1b_1
\vdots
aMa_M bMb_M

输出格式

输出可能选出的 KK 的最大值。

样例 1

输入

3 3
1 2
2 3
3 1

输出

2

样例 2

输入

3 5
1 1
2 1
2 2
3 2
3 3

输出

3

样例 3

输入

7 5
1 7
7 1
3 4
2 6
5 2

输出

1

说明/提示

限制条件

  • 1N,M2×1051 \leq N, M \leq 2 \times 10^5
  • 1ai,biN1 \leq a_i, b_i \leq N
  • 如果 iji \neq j,则 aiaja_i \neq a_jbibjb_i \neq b_j

样例解释 1

选择第 1122 条线段是最优解之一。例如,第 11 条线段和第 33 条线段包含了同一个点 (53,23)\left(\frac{5}{3}, \frac{2}{3}\right),因此不能同时选择。

样例解释 2

选择第 113355 条线段是最优解之一。例如,第 11 条线段和第 22 条线段包含了同一个点 (1,1)(1, 1),因此不能同时选择。

样例解释 3

由 ChatGPT 4.1 翻译