生活随笔
收集整理的這篇文章主要介紹了
bzoj1430
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
這道題只是給bzoj1005做一個(gè)鋪墊
這里介紹了一個(gè)叫prufer編碼的東西,就是
給定一棵帶標(biāo)號(hào)的無(wú)根樹(shù),找出編號(hào)最小的葉子節(jié)點(diǎn),寫下與它相鄰的節(jié)點(diǎn)的編號(hào),
然后刪掉這個(gè)葉子節(jié)點(diǎn)。反復(fù)執(zhí)行這個(gè)操作直到只剩兩個(gè)節(jié)點(diǎn)為止。
這個(gè)編碼有幾個(gè)重要的性質(zhì)
1.?每棵樹(shù)都唯一對(duì)應(yīng)一個(gè)prufer編碼
2.?每一個(gè)prufer編碼都唯一對(duì)應(yīng)一棵樹(shù)
3.?樹(shù)上每個(gè)點(diǎn)的度數(shù)-1=這個(gè)點(diǎn)在數(shù)列出現(xiàn)的次數(shù)
所以用這個(gè)解決完全圖生成樹(shù)個(gè)數(shù)就很顯然了,答案是n^(n-2)
1 const mo=
9999991;
2 var c:
array[
0..
100]
of longint;
3 i,j,p,b:longint;
4 ans,n:int64;
5
6 begin
7 readln(n);
8 j:=
0;
9 b:=n-
2;
10 while b<>
0 do
11 begin
12 inc(j);
13 c[j]:=b
mod 2;
14 b:=b
div 2;
15 end;
16 ans:=
1;
17 for i:=j
downto 1 do
18 begin
19 ans:=sqr(ans)
mod mo;
20 if c[i]=
1 then ans:=ans*int64(n)
mod mo;
21 end;
22 for i:=
1 to n-
1 do
23 ans:=ans*int64(i)
mod mo;
24 writeln(ans);
25 end.
26
27 View Code ?
轉(zhuǎn)載于:https://www.cnblogs.com/phile/p/4473067.html
總結(jié)
以上是生活随笔為你收集整理的bzoj1430的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。