#arc062d. [arc062_d]Painting Graphs with AtCoDeer
[arc062_d]Painting Graphs with AtCoDeer
問題文
シカのAtCoDeerくんはある日、 頂点 辺からなる単純な(すなわち、多重辺と自己ループのない)グラフを拾いました。頂点には,,,の番号がついていて互いに区別が可能で、辺はで表されます。 AtCoDeerくんは 色のペンキを使って各辺を塗ろうとしています。ペンキは大量にあるので同じ色で複数の辺を塗ることが可能です。 AtCoDeerくんの拾ったグラフは特殊な形状をしているため、単純なサイクル(すなわち,サイクルであって同じ頂点を一度しか通らないもの)を選んで、そのサイクル上の辺の色をひとつずつサイクルに沿ってずらすことが出来ます。正確に言うと、サイクル上の辺を順に , ,, とすると、 に塗られていた色を に、 に塗られていた色を に、 、 に塗られていた色を に、 に塗られていた色を に、同時に塗り替えることが出来ます。
図: 操作の例
塗り方Aと塗り方Bは、この操作を有限回行ってAからBに変形できるときに同じ塗り方だとみなします。グラフの塗り方が何通りあるか求めてください。ただしこの数は非常に大きくなることがあるので、 で割ったあまりを出力してください。
制約
- グラフには自己ループや多重辺はない。
入力
入力は以下の形式で標準入力から与えられる。
出力
塗り方が何通りあるかを で割ったあまりを出力せよ。