ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

ARC065 D - 連結 / Connectivity

問題
提出コード

解法

UnionFind木を貼ると解ける問題です。
鉄道について、辺をそのままUnionFind木に反映させると、根が同じ都市については、連結であることになります。
道路についても同様です。ということで、まずはUnionFind木を2つ用意し、鉄道と道路それぞれについて辺を付け足していきます。
あとは、鉄道と道路両方の根が一致する個数を数え上げます。
mapを用意し、鉄道と道路の根のペアをキー、そしてそのようになる都市の個数を紐づけていきます。
n個の都市すべてについて道路と鉄道の根のペアを求め、mapにおいて対応する場所に+1していくことで、出力の際にmapで対応する場所を見るだけで答えが求まります。