•题目描述
火星怪兽历经艰辛跨越了国家阶段之后,终于发展到了太空阶段,但是他的第一次航行就遇到了麻烦。
他要去临近的星系开发殖民地,但是途中需要穿越一片大小为$N * N$的小行星带($1< =N< =500$)。他进行了一次扫描,发现里面一共有K颗小行星($1< =K< =10,000$),小行星的位置可以用直角坐标(Xi,Yi)表示。火星怪兽的飞行技术有限,他不敢直接尝试穿越,所以他决定逆天——把小行星全部炸掉。
秉承火星怪兽一贯的游戏风格,他用修改器刷钱,装备了高能脉冲炮。这种武器可以发出一道直线脉冲,把某一条直线上的小行星全部轰成碎片。但是问题在于它的定位能力有限,只能平行于直角坐标轴发射;同时他的耗能太高,不能用太多次,所以火星怪兽必须用尽量少的发射次数来清理掉所有的小行星。
火星怪兽打算去写个程序输出解决方案,但是就在这个时候某部宅男动漫更新了,火星怪兽的注意力瞬间转移到了另外一个平行宇宙,所以他把这个任务交给了你……
•输入格式
第1行: 两个整数,分别为N、K,用一个空格隔开。
第2 - k+1行: 每行两个整数Xi、Yi,用空格隔开,表示每颗小行星的位置。
输出格式
一行,一个整数M,表示最少需要使用高能脉冲炮的次数。
输入样例
3 4 1 1 1 3 2 2 3 2 输出样例提示
2
以下的图形对应了输入样例,“X”代表小行星,“.”代表空间
X.X
.X.
.X.
对于此情况,火星怪兽可以可以在第一行使用一次脉冲炮,摧毁位于(1,1)和(1,3)的小行星,然后在第二列使用一次,摧毁位于(2,2)和(3,2)的小行星