bzoj1430: 小猴打架(prufer序列)
阿新 • • 發佈:2018-01-21
tdi prufer序列 %d -s font targe mil 所有 namespace
1430: 小猴打架
題目:傳送門
簡要題意:
n只互不相識的猴子打架,打架之後就兩兩之間連邊(表示已經相互認識),只有不認識(朋友的朋友都是朋友)的兩只猴子才會打架。最後所有的猴子都會連成一棵樹,也就是經過n-1次打架,求不同的打架方案數。
題解:
我們需要一個強大的方法:prufer序列。。。
這個東西很牛逼!!!
簡單來說就是把一顆n個節點的無根樹,轉換為n-2的一個序列
序列和樹之間兩兩可互相轉化,且是一一對應的。
具體%%%神犇:prufer序列
思考niang小時,代碼niang分鐘:
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 typedef long long LL; 5 const LL mod=9999991LL; 6 int n; 7 int main() 8 { 9 LL ans=1; 10 scanf("%d",&n); 11 for(int i=1;i<=n-2;i++)ans=ans*n%mod; 12 for(LL i=1;i<n;i++)ans=ans*i%mod;13 printf("%lld\n",ans); 14 return 0; 15 }
bzoj1430: 小猴打架(prufer序列)