#P15873. [Roi2023 Team]Streets of Flatland平面国街道

[Roi2023 Team]Streets of Flatland平面国街道

题目描述

Flatland 是平面上的一个国家,有 nn 座城市,由 n1n-1 条双向道路连接成一棵树。第 ii 座城市位于点 (xi,yi)(x_i,y_i)

国家要给每条道路命名,为了节约资源,希望不同名字数量尽可能少。若若干道路组成一条简单路径,且对路径上任意相邻两条道路 (u,v)(u,v)(v,w)(v,w),有向道路对 uvu\to vvwv\to w 兼容,且反向的 wvw\to vvuv\to u 也兼容,则这些道路可以使用同一个名字。这样的同名路径称为一条高速路。

兼容性的定义:对于有向道路 uvu\to vvwv\to w,若从向量 vu\overrightarrow{vu} 绕点 vv 旋转到向量 vw\overrightarrow{vw} 的过程中,不会遇到从 vv 出发的其它道路,则称它们兼容。若某条道路方向与旋转过程中的向量共线,则它被视作唯一兼容对象。

求把所有道路划分为若干条高速路所需的最少不同名字数。

输入格式

第一行输入整数 nn,表示城市数,1n21051\le n\le 2\cdot 10^5

接下来 nn 行,第 ii 行输入两个整数 xi,yix_i,y_i,表示第 ii 座城市坐标,满足 xi,yi109|x_i|,|y_i|\le 10^9,且不存在两座城市坐标相同。

接下来 n1n-1 行,每行两个整数 ui,viu_i,v_i,表示一条道路。保证这些道路构成一棵树。

保证从同一座城市出发的任意两条道路不共线;但道路对应的线段在平面上可以相交。

输出格式

输出一个整数,表示最少高速路数量。

样例

输入
5
0 0
2 4
3 -1
0 -2
-4 -3
1 2
1 3
1 4
1 5

输出
2
输入
5
0 0
2 4
3 -1
0 -2
0 3
1 2
1 3
1 4
1 5

输出
3