#AT1968. D - Teleportation

D - Teleportation

当前没有测试数据。

D - 传送

得分:400分

问题描述

AtCoder 共和国位于平面直角坐标系上。
它有$N$座城镇,编号为$1,2,\dots,N$。第$i$座城镇位于$(x_i, y_i)$处,且没有两座不同的城镇位于相同的坐标。

这个国家有传送咒语。咒语由一对整数$(a,b)$确定,使用咒语$(a, b)$时,将你传送到$(x+a, y+b)$处。

Snuke 是一位了不起的魔法师,他可以任意选择一对整数$(a, b)$学习咒语。他可以学习的咒语数量也是无限的。
为了能够使用咒语在城镇之间旅行,他决定学习一些咒语,以便对于任意不同的城镇对$(i, j)$,都可以做到以下操作:

  • 选择**某一个已学习的咒语**,然后**重复使用**选择的咒语,从城镇$i$到达城镇$j$。

Snuke至少需要学习多少咒语才能实现上述目标?

约束

  • $2 \leq N \leq 500$
  • $0 \leq x_i \leq 10^9$ $(1 \leq i \leq N)$
  • $0 \leq y_i \leq 10^9$ $(1 \leq i \leq N)$
  • 如果 $i \neq j$ ,则 $(x_i, y_i) \neq (x_j, y_j)$。

输入

输入在标准输入中以下述格式给出:

NN

x1x_1 y1y_1

x2x_2 y2y_2

\vdots

xNx_N yNy_N

输出

输出需要 Snuke 学习的最小咒语数量。


3
1 2
3 6
7 4
6

下图显示了城镇的位置(包括四个角落的坐标)。

image

如果 Snuke 学习以下六个咒语,他可以对于每一对 $(i,j)$($i \neq j$),使用其中一个咒语一次以实现他的目标。

  • $(2, 4)$
  • $(-2, -4)$
  • $(4, -2)$
  • $(-4, 2)$
  • $(-6, -2)$
  • $(6, 2)$

另一种选择是学习以下六个咒语。在这种情况下,他可以对于每一对 $(i,j)$($i \neq j$),使用其中一个咒语两次以实现他的目标。

  • $(1, 2)$
  • $(-1, -2)$
  • $(2, -1)$
  • $(-2, 1)$
  • $(-3, -1)$
  • $(3, 1)$

不存在由少于六个咒语组成,且能实现目标的组合,所以输出结果为$6$。


3
1 2
2 2
4 2
2

最优选择是学习以下两个咒语:

  • $(1, 0)$
  • $(-1, 0)$

4
0 0
0 1000000000
1000000000 0
1000000000 1000000000
8