HUPC2020Day1 F: n 角錐グラフ
解法
頂点0と別の頂点を結ぶ辺の集合を中心の辺、とを結ぶ辺の集合を円周上の辺と呼ぶことにします。
回頂点0に戻る、と仮定したときの数え方が高速に求まれば、これを全部のについて試せばよいです。
このとき、頂点0を1回だけ通る閉路は個あるはずです。よって、今回見ているサーキットは、中心の辺が本の中から本、円周上の辺は本から本選ばれていることになります。
これらの閉路を通る順番はなんでもよく、また、閉路を時計回りに進むか、反時計回りに進むかはそれぞれの閉路ごとに独立に考えられます。よって、最後にをかける必要があります。
次に、上記の閉路で使う辺のパターンを数えます。
同じ辺を2回以上通れないことから、
(辺を通る区間)(辺を通らない区間)(辺を通る区間)...(辺を通らない区間)
となっているはずです。辺を通る区間、通らない区間は丁度個になっています。
辺を通る区間の1つが、1,2,...kであると固定します。そうすると、このときの区間の決め方を数えたときに、をかければ、全体での辺の決め方を数えられたことになります(先頭を固定したので、その先頭を頂点全てに経験させる必要がありますが、先頭のそれぞれの閉路パターンで、先頭の選び方は通りあります。よってこの値をかければよいです)。
このとき、辺を通る区間、通らない区間それぞれ独立に考えると、
辺を通る区間:通り
辺を通らない区間:通り
で数えられます。
選ばなければいけない辺の本数がそれぞれ決まっていて、個の区間に最低1本ずつ割り振る必要があるので、まず1本ずつ割り振った後に、重複組み合わせを考えればよいです。
さて、これにより辺本を通るサーキットの個数が
で求められることがわかりました。
あとは重みの総和ですが、中心の辺が選ばれる確率は、円周上の辺が選ばれる確率はなので、これをにかけてあげた後、上記の通り数をかければ答えが求まります。
感想
悩みましたが、実際に数え上げてみると求める解は想像以上に綺麗になるので面白かったです。