atcoder#ABC269D. [ABC269D] Do use hexagon grid

[ABC269D] Do use hexagon grid

题目描述

以下のような、無限に広い六角形のグリッドがあります。最初、全てのマスは白です。

ある六角形のマスは 2 2 つの整数 i,j i,j を用いて (i,j) (i,j) と表されます。
マス (i,j) (i,j) は以下の 6 6 つのマスと隣接します。

  • (i1,j1) (i-1,j-1)
  • (i1,j) (i-1,j)
  • (i,j1) (i,j-1)
  • (i,j+1) (i,j+1)
  • (i+1,j) (i+1,j)
  • (i+1,j+1) (i+1,j+1)

高橋くんは、 N N 個のマス (X1,Y1),(X2,Y2),,(XN,YN) (X_1,Y_1),(X_2,Y_2),\dots,(X_N,Y_N) を黒く塗りました。
黒いマスがいくつの連結成分をなすか求めてください。
ただし、ある 2 2 つの黒いマスが同じ連結成分に属するとは、この 2 2 つの黒いマスの間をいくつかの隣接する黒いマスを辿って移動できることを指します。

输入格式

入力は以下の形式で標準入力から与えられる。

N N X1 X_1 Y1 Y_1 X2 X_2 Y2 Y_2 \vdots XN X_N YN Y_N

输出格式

答えを整数として出力せよ。

题目大意

题目出一张图,图中每个点和 66 个点相邻,问给定的 nn 个点能有多少个联通块。联通指两个点通过相邻的 66 个方向互相可达.

6
-1 -1
0 1
0 2
1 0
1 2
2 0
3
4
5 0
4 1
-3 -4
-2 -5
4
5
2 1
2 -1
1 0
3 1
1 -1
1

提示

制約

  • 入力は全て整数
  • 1  N  1000 1\ \le\ N\ \le\ 1000
  • Xi,Yi  1000 |X_i|,|Y_i|\ \le\ 1000
  • (Xi,Yi) (X_i,Y_i) は相異なる

Sample Explanation 1

高橋くんがマスを黒く塗った後、グリッドは下図の状態になります。 ![](https://img.atcoder.jp/abc269/865747dac44d93b150ecbed462ac4ef3.png) 黒いマスがなす連結成分は以下の 3 3 つです。 - (1,1) (-1,-1) - (1,0),(2,0) (1,0),(2,0) - (0,1),(0,2),(1,2) (0,1),(0,2),(1,2)