#P0211. C. 连接(connect)

C. 连接(connect)

题目描述

在二维平面上有一个初始为 NN 个顶点、00 条边的图 GG。顶点编号为 11NN,顶点 ii 的坐标为 (xi,yi)(x_i,y_i)

对于图 GG 中的顶点 uuvv,定义它们之间的距离 d(u,v)d(u,v) 为曼哈顿距离:d(u,v)=xuxv+yuyvd(u,v)=|x_u-x_v|+|y_u-y_v|

对于图 GG 的两个连通分量 AABB,设它们的顶点集合分别为 V(A)V(A)V(B)V(B),则定义 AABB 之间的距离 d(A,B)d(A,B) 为:$d(A,B)=\min\lbrace d(u,v) \mid u \in V(A), v \in V(B) \rbrace$。

请处理以下 QQ 个查询,查询分为三种类型:

  1. 1 a b:设当前图 GG 的顶点数为 nn,在坐标 (a,b)(a,b) 处新增顶点 n+1n+1,并将其加入图 GG
  2. 2:设当前图 GG 的顶点数为 nn,连通分量数为 mm
    • m=1m=1,输出 -1
    • m2m \geq 2,找到距离最小的连通分量对,并将它们合并(即在这些连通分量之间添加边,使得所有距离等于最小值的顶点对相连),然后输出该最小距离值。
  3. 3 u v:若顶点 uuvv 属于同一连通分量,输出 Yes;否则输出 No

输入格式

输入通过标准输入给出,格式如下:

NN QQ
x1x_1 y1y_1
x2x_2 y2y_2
\vdots
xNx_N yNy_N
query1\mathrm{query}_1
query2\mathrm{query}_2
\vdots
queryQ\mathrm{query}_Q

每个查询为以下三种形式之一:

11 aa bb
22
33 uu vv

输出格式

按照题目要求输出每个查询的结果,每个结果占一行。

输入输出样例 #1

输入 #1

4 11
3 4
3 3
7 3
2 2
3 1 2
2
3 1 2
1 6 4
2
3 2 5
2
3 2 5
2
1 2 2
2

输出 #1

No
1
Yes
2
No
3
Yes
-1
0

说明/提示

约束条件

  • 2N15002 \leq N \leq 1500
  • 1Q15001 \leq Q \leq 1500
  • 0xi,yi1090 \leq x_i, y_i \leq 10^9
  • 对于类型 1 的查询,0a,b1090 \leq a, b \leq 10^9
  • 对于类型 3 的查询,设处理该查询前图 GG 的顶点数为 nn,则 1u<vn1 \leq u < v \leq n
  • 输入均为整数

样例解释 1

初始时,顶点 1,2,3,41,2,3,4 的坐标分别为 (3,4),(3,3),(7,3),(2,2)(3,4),(3,3),(7,3),(2,2)

  • 第 1 个查询:顶点 1122 不连通,输出 No
  • 第 2 个查询:有 4 个连通分量($\lbrace 1 \rbrace, \lbrace 2 \rbrace, \lbrace 3 \rbrace, \lbrace 4 \rbrace$),最小距离为 11(顶点 1122 之间),合并后输出 11
  • 第 3 个查询:顶点 1122 已连通,输出 Yes
  • 第 4 个查询:新增顶点 55,坐标为 (6,4)(6,4)
  • 第 5 个查询:最小距离为 22(顶点 2244、顶点 3355 之间),合并后输出 22
  • 第 6 个查询:顶点 2255 不连通,输出 No
  • 第 7 个查询:最小距离为 33(顶点 1155 之间),合并后输出 33
  • 第 8 个查询:顶点 2255 已连通,输出 Yes
  • 第 9 个查询:所有顶点连通,输出 -1
  • 第 10 个查询:新增顶点 66,坐标为 (2,2)(2,2)
  • 第 11 个查询:最小距离为 00(顶点 4466 之间),合并后输出 00