Kazun の競プロ記録

競技プログラミングに関する様々な話題を執筆します.

AtCoder Beginner Contest 269 D問題 Do use hexagon grid

問題

atcoder.jp

提出解答

atcoder.jp

問題の概要

問題文の図 にあるように六角形のグリッドがある.

この六角形のうち,  N 個のマス  (X_1, Y_1), \dots, (X_N, Y_N) は黒であり, それ以外のマスは全て白色である.

このとき, 黒マスはいくつの連結成分からなるか?

制約

  •  1 \leq N \leq 1000
  •  |X_i|, |Y_i| \leq 1000

解法

今回の問題ではマス  (i,j) に隣接するマスが問題文中に書かれている. これを利用して黒マスを頂点, 隣接するマス同士を結ぶ辺に対する無向グラフの連結成分数を数え上げれば良い. これには BFS や DFS で可能である.

計算量については愚直に行うと  O(N^2) 時間, 近傍の求め方を工夫することにより,  O(N) 時間に落とすこともできる.