G - Equal Connected Components

2 secs 1024 MB
kusirakusira's icon kusirakusira

連結成分の全体集合を CC 、各連結成分を cic_i とします。

結論を言うと、答えは
MC (len(ci)1)M - \sum_{C}\ ( \mathrm{len(c_i)} - 1)
です。
len(ci)\mathrm{len(c_i)}cic_iに属する頂点の個数とします。

この問題では各連結成分について独立であるので、各連結成分に対して削除できる辺の本数を求めすべて足し合わせればよいです。

ある連結成分の全ての頂点を繋ぐために最低限必要な辺の本数は len(ci)1\mathrm{len(c_i)} - 1本です。
(削除できる辺の本数)=(その連結成分に属する辺の本数)(最低限必要な辺の本数)(削除できる辺の本数) = (その連結成分に属する辺の本数) - (最低限必要な辺の本数) であり、これの各連結成分の合計が答えとなります。

また C (その連結成分に属する辺の本数)\sum_{C}\ (その連結成分に属する辺の本数) は全体の辺の本数と等しいので、わざわざ求める必要はないです。

C++
Python