ケーリーのC A Y L E 式は、のためのものであるY定義N個の異なるノードは、無根木で構成することができる(元のツリー接続グラフないか、または符号ノードである)種の数であるN(^ N -2)種。(ここでは、こんにちは、誰もがそれは実際には、同じ概念である必要があり、根なしツリーで書かれていることを理解してみましょう)
だから、私たちの最初の問題が解決され、次のステップは、無根の木と根とツリーの間の遷移を解決することです。
しかし、それは、変換することは困難ですか?ルートノードとルート付きツリーに変換N- 無根木のnの場合、すなわちN- ^(N - 2)* n-は、単純化である^ N-(N - 1) 。答えは、このようなものをアップしています。
ので、この質問は、N- 大きなので、私たちはすぐに電源にそれを使用しました。
書式#include <iostreamの> の#include <cstdioを> する#include <fstreamの> の#include <アルゴリズム> 書式#include <cmath> の#include <両端キュー> の#include <ベクトル> の#include <キュー> の#include < 文字列 > の#include <CStringの> #include <地図> の#include <スタック> の#include < 設定 > の#define LL長い長 の#define ULL符号なし長い長 の#define担当者(I、J、K)のための(iはjは= int型、私は= Kを<; I ++)は #define DEP(I、J、 I> = J; i--)は、(i = kはint型用K)#define INF 0x3f3f3f3f の#define MEM(i、j)はmemsetの(I、J、はsizeof(I)) の#defineメイク(i、j)はmake_pair(i、j)の の#define PB一back 使用して 名前空間はstdを、 const int型 MOD = 1E9 + 9 。 LLのKSM(LL、LL b)は{ LL ANS = 1 。 一方、(b)は、{ もし、(B&1)ANS = ANS *%のMOD。= A *%のMOD。 B >> = 1 。 } 戻りANS。 } int型メイン(){ int型N、T。 scanf関数(" %のD "、&T)。 一方、(t-- ){ scanf関数(" %のD "、&N) COUT << KSM(1LL * N、1LL *(N - 1))<< ENDL。 } 戻り 0 。 }
ます。https://www.cnblogs.com/Willems/p/11016727.htmlで再現