2891 C: な◯りカット (Namo.. Cut)
問題
https://onlinejudge.u-aizu.ac.jp/problems/2891
頂点と
辺からなる連結無向グラフ
が与えられる。また以下のクエリが
回与えられる。クエリのそれぞれに回答せよ。
- グラフ
の
頂点
を非連結にするために削除する必要がある辺の最小本数を求めよ
制約
考え方
連結無向グラフ は
頂点と
辺からなるので、明らかに閉路を
つもつ。またクエリの回答は、
のどちらも閉路上のパスに存在すれば、
本削除する必要があり、そうでない場合は
本削除すればよいことがわかる。よって求めるべき内容は閉路のパスに含まれる頂点の集合である。
ここで、閉路に含まれない頂点を取り除いても、閉路のパスには影響がないので取り除くことにしよう。頂点の次数が の頂点
から順に辺を削除してくことで
と隣接する頂点の次数が
減ることになる。そうして貪欲に各頂点の次数を下げていったときに最終的にすべての頂点の次数が
になれば
は閉路を持たない(ただし今回はありあえない)。そうでない場合は残っている次数
以上の頂点の集合が閉路のパスになる。
よって各クエリにたいして、 のどちらも閉路のパスに含まれれば
、そうでない場合は
と出力する。
どこに着目して考察するべきだったか
無向グラフの閉路検出は、次数が の頂点の辺を貪欲に取り除くことで検出できる。取り除いたときに次数が
以上の頂点が閉路パスに含まれる頂点である。
何がバグっていたか
得た知見
次数 の頂点から貪欲に辺を削除