炸弹
题号:NC236754
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给一张  的方格图,方格图中有m个障碍物。Playf想要消除这些障碍物,为此他准备了一些炸弹。每一个炸弹可以消除一行或者一列的所有障碍物。因为炸弹很昂贵,Playf想用尽可能少的炸弹消除所有障碍物,你能帮帮他吗?

输入描述:

第一行输入两个整数  分别表示方格图的大小和障碍物总数。
接下来m行,每行输入两个整数  ,表示一个障碍物在方格图内的坐标。输入保证没有两个障碍物的坐标相同。

输出描述:

输出一行一个整数,表示Playf至少需要用多少炸弹才能消除所有障碍物。
示例1

输入

复制
3 4
1 1
1 3
2 2
3 2

输出

复制
2

说明

输入数据如下:
X.X
.X.
.X.
其中X表示障碍物。
Playf至少需要两个炸弹才能消除所有障碍物,第一个炸弹可以用于消除第一行的障碍物,第二个炸弹用于消除第二列的障碍物。