•Havel-Hakimi定理:
図のない点が、この配列に対応しないように、有向グラフがある場合非負整数{D1、D2、...、DN}のシーケンスが与えられると、この配列は、図1のと呼ばれてもよいです。
さらに、グラフの簡単なグラフならば、単に図のシーケンスと呼ばれます。
定理の説明:
、非負整数、S = {D1、D2、D3···DN}の非増分順序によって限定場合にのみS1 = {D2-1、D3-1 ... D(D1 + 1)、D (D1 + 2)... dnが}なされるべきであり、そして
つまり、非増分有限のシーケンスS1は、それぞれ、非負整数であり、S1はS D1の最初の要素の後に削除された第1の減算エレメントD1により得られる配列です。
例:
44332は、図のか否かを判断します。
まず、昇順で非44332に従って
4削除し、上位4及び数は-1になり:3221
次いで3を削除し、値-1トップ3になる:110
1前のターンの多数を削除するには、1を削除します。10
0:1前のターン多数を削除するには、1を削除します。
なお、図です。
545231図のかどうかを判断します。
まず非昇順554321により、
5を外し、トップ5と-1の数は次のようになります。43210
次に4を除去し、フロント4が多数になり-1:321-1
描画ではないの、負のがありました
945231図のかどうかを判断します。
まず非昇順954321により、
その後、最初の9つの大規模な数-1が、その数は十分ではフロント9ではない、9削除、
つまり、マイナスがあるでしょう
図のではありません。
•コードに
コードの表示1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 の#defineがっ長い長い 4 LL [ 2005 ]。 5 INT N。 6 BOOL Slove() 7 { 8が ため(int型 i = 0 ; iがn <; ++ I) 9 { 10 ソート(A + I、+ N、大きな< INT >()); // 非增序排列 11 であれば([I] == 0 ) 12 リターン 真。 13 もし(I [i]は> = N +) // [i]は多数存在していない前に 14 リターン falseにし、 15 のために(INT J =私は+ 1、J ++; Jは<= I [i]が+)// [i]は、大多数の-1される前に 16 { 17 [J] - ; 18である IF([J] < 0 ) 。19 リターン falseに、 20である } 21れる } 22である } 23である 24 25 INT (メイン) 26であります { 27 INT T; 28 scanfの(" %のD "、&T)。 29 一方(t-- ) 30 { 31 のscanf(" %d個"、&N) 32 LL和= 0 。 33 のためには、(int型 i = 0 ; iがn <; iは++ ) 34 { 35 のscanf(" %のLLD "、A + I)。 36 の合計+ = A [i]は、 37 } 38 39 であれば(合計%2 ) 40 { 41 プット(" なし" )。 42 続け; 43 } 44 45 であれば(Slove()) 46の プット(" はい" ); 47の 他の 48 プット(「なし」)。 49 } 50 }