AT_arc126_b [ARC126B] Cross-free Matching

题目描述

在坐标平面上,有 $2N$ 个顶点,其 $x$ 坐标为 $1, 2, \ldots, N$,$y$ 坐标为 $0$ 或 $1$,即顶点为 $(1, 0), \ldots, (N, 0), (1, 1), \ldots, (N, 1)$。在这些顶点中,有 $M$ 条线段,每条线段 $i$ 连接 $(a_i, 0)$ 和 $(b_i, 1)$。 你需要从这 $M$ 条线段中选出 $K$ 条,使得任意两条被选中的线段都没有公共点(即没有公共端点)。请注意,线段的两个端点也算作线段包含的点。请你求出可能选出的 $K$ 的最大值。

输入格式

输入通过标准输入给出,格式如下: > $N$ $M$ > $a_1$ $b_1$ > $\vdots$ > $a_M$ $b_M$

输出格式

输出可能选出的 $K$ 的最大值。

说明/提示

## 限制条件 - $1 \leq N, M \leq 2 \times 10^5$ - $1 \leq a_i, b_i \leq N$ - 如果 $i \neq j$,则 $a_i \neq a_j$ 或 $b_i \neq b_j$ ## 样例解释 1 选择第 $1$、$2$ 条线段是最优解之一。例如,第 $1$ 条线段和第 $3$ 条线段包含了同一个点 $\left(\frac{5}{3}, \frac{2}{3}\right)$,因此不能同时选择。 ![](https://img.atcoder.jp/arc126/3e4cb12392855ea49b7ed0b643ebd370.png) ## 样例解释 2 选择第 $1$、$3$、$5$ 条线段是最优解之一。例如,第 $1$ 条线段和第 $2$ 条线段包含了同一个点 $(1, 1)$,因此不能同时选择。 ![](https://img.atcoder.jp/arc126/416681cace776c87fac353e0acb9c4a1.png) ## 样例解释 3 ![](https://img.atcoder.jp/arc126/2436c39ccc0fa35fc57d35647bce9f08.png) 由 ChatGPT 4.1 翻译