#P16666. [Ctu2023]Hamster

[Ctu2023]Hamster

题目描述

仓鼠 Joe 是 Tomorrow Programming School 深受喜爱的宠物之一。

生物系把为 Joe 设计和建造活动围栏的任务交给了学校的“搭载强力人工智能的中央机器人”CRESAI。

围栏将建在生物系新划定的一块动物活动区域中。该区域是一个水平平面,由边长为 11 的正方形地砖铺成。相邻地砖之间的缝隙构成一个矩形网格。

围栏由若干长度为 11 的墙段组成。每一段墙都安装在两块相邻地砖之间的缝隙上,并且墙段的两个端点都位于地砖的角点处。

如果两块相邻地砖之间没有墙段,Joe 就可以从当前地砖移动到另一块地砖。Joe 不能跳过或钻过墙段,也不能从两段相邻墙之间挤过去,更不能撞毁墙段。

因此,当墙段被恰当地放置时,它们可以形成一个封闭区域,使 Joe 无法逃到外面。

然而,CRESAI 并没有很好地完成任务。虽然它安装的每一段墙都位于合法的网格缝隙上,且两个端点均为格点,但大部分墙段似乎是随机放置的,不能保证已经形成任何封闭区域。

为了暂时解决这个问题,生物学家希望再安装尽可能少的单位墙段。新墙段可以安装在任意尚未使用的合法网格缝隙上。

添加墙段后,只要能够形成一个任意形状、任意大小的封闭区域即可。CRESAI 原先安装的部分墙段可以不参与这个封闭区域。

请计算最少还需要添加多少段墙,才能形成一个 Joe 无法逃出的封闭区域。

输入格式

第一行包含一个整数 MM

1M105,1\le M\le 10^5,

表示 CRESAI 已经安装的墙段数量。

接下来 MM 行,每行描述一段墙,包含四个整数:

x1, y1, x2, y2.x_1,\ y_1,\ x_2,\ y_2.

其中 (x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2) 是该墙段两个端点的坐标。

坐标轴与网格缝隙平行,所有网格交点的坐标均为整数。所有输入墙段均满足:

109x1,y1,x2,y2109,-10^9\le x_1,y_1,x_2,y_2\le 10^9,

以及

x1x2+y1y2=1.|x_1-x_2|+|y_1-y_2|=1.

也就是说,每一段墙都是连接两个相邻整数点的单位水平线段或单位竖直线段。

输出格式

输出一个整数,表示为了形成至少一个任意大小、任意形状的封闭区域,最少还需要添加的墙段数量。

样例

输入

9
0 0 0 1
0 1 1 1
1 1 1 2
1 2 0 2
0 2 -1 2
-1 2 -2 2
-2 2 -2 1
-2 1 -2 0
-2 0 -1 0

输出

1

样例示意图

样例墙段示意图