エイシングプログラミングコンテスト2019-C Alternating Path
以前解説ACしたものを自力で解いた
問題概要
#
, .
のみで構成されるグリッドにおいて、#
と.
を交互に渡る経路はいくつあるか
ただし始点は#
, 終点は.
とする
解法
DFSとUnion Findで.
と#
で交互に渡ることのできるエリアをグループにする
以下は入力例1の場合
#
からいける.
の数の総和が答えなので連想配列を使ってグループにおける#
の個数を記録
↓
(グループの大きさ - #
の数) * (#
の数)でグループの#
が到達することのできる.
の数が算出できる