Editorial

つまるところ、もともとつながっていた電柱たちを分けていくと1本以上の電柱が属するグループを構成することができます。
そのようなグループ同士の間に新たな電線を引けばよいので、すべてのグループ数1すべてのグループ数-1が答えです。

また、グループの数はUnionFindなどのアルゴリズムを用いて求めることが可能です。

AtCoder LibraryのUnion Findのように、グループの数を求めるメンバ関数が存在する場合は実装が簡単です
そうでない場合はNN個の頂点それぞれについて親をみて、親の種類数を数えればよいでしょう。

特段こだわりがなければAC-Libraryのdsuを使うと実装が楽です。

実装例(C++)