problem
一開始森林裡面有n只互不相識的小猴子,它們經常打架,但打架的雙方都必須不是好朋友。每次打完架後,打架的雙方以及它們的好朋友就會互相認識,成為好朋友。經過n-1次打架之後,整個森林的小猴都會成為好朋友。 現在的問題是,總共有多少種不同的打架過程。 比如當n=3時,就有六種不同的打架過程。
乙個整數n。
一行,方案數mod 9999991。
輸入樣例#1
4
輸出樣例#1
96
50%的資料n<=10^3。 100%的資料n<=10^6。
#include using namespace std;
typedef long long ll;
const ll mod=9999991;
int n;
ll ans=1;
int main()
???
題目等價於求乙個有\(n\)個節點的完全圖的生成樹的方案有多少個
兩個方案不同當且僅當生成樹中有至少一條邊不同,或者生成樹相同,而加邊的順序不同
前置知識:
cayley公式:對於乙個有\(n\)個節點的完全圖\(g\),它的生成樹個數有\(n^\)個
證明需要用到prufer編碼,其實matrix-tree定理也可以證明
下面是兩篇分別通過prufer編碼和matrix-tree定理證明cayley的部落格:
經典證明:prüfer編碼與cayley公式
題解 p4430 【小猴打架】
然後是這道題,對於每棵生成樹,有\((n-1)!\)種順序將邊加入生成樹中,所以還要乘上去
luogu4430 小猴打架
假碩講了個prufer編碼和caylay公式 我為了證明prufer編碼沒用 所以用矩陣樹定理證明了caylay公式 讓我們用矩陣樹定理推一波 首先這個小猴打架最後會打成一棵樹,這棵樹是n個點的完全圖的生成樹 所以用矩陣樹定理 構建矩陣 n個點的完全圖 這是我們的鄰接矩陣 begin0 1 1 cd...
洛谷 P4430 小猴打架
洛谷 p4430 小猴打架 一開始森林裡面有n只互不相識的小猴子,它們經常打架,但打架的雙方都必須不是好朋友。每次打完架後,打架的雙方以及它們的好朋友就會互相認識,成為好朋友。經過n 1次打架之後,整個森林的小猴都會成為好朋友。現在的問題是,總共有多少種不同的打架過程。比如當n 3時,就有六種不同的...
P4430 小猴打架 P4981 父子
當然你也可以理解為 cayley 公式,其實這個公式就是prufer編碼經過一步就能推出的 p4430 小猴打架 p4981 父子 這倆題差不多 先說父子,很顯然題目就是讓你求 n 個點的有根樹有幾條 n 個點的無根樹的 prufer 編碼有 n 2 位,且編碼和樹一一對應並且每一位可以重複 那麼就...