atcoder#ABC269D. [ABC269D] Do use hexagon grid

[ABC269D] Do use hexagon grid

配点 : 400400

問題文

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

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

  • (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)

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

制約

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

入力

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

NN

X1X_1 Y1Y_1

X2X_2 Y2Y_2

\vdots

XNX_N YNY_N

出力

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

6
-1 -1
0 1
0 2
1 0
1 2
2 0
3

高橋くんがマスを黒く塗った後、グリッドは下図の状態になります。

黒いマスがなす連結成分は以下の 33 つです。

  • (1,1)(-1,-1)
  • (1,0),(2,0)(1,0),(2,0)
  • (0,1),(0,2),(1,2)(0,1),(0,2),(1,2)
4
5 0
4 1
-3 -4
-2 -5
4
5
2 1
2 -1
1 0
3 1
1 -1
1