質問の意味:
配列インデックスiが<jおよびPI> PJの場合、点p ijの間のエッジがあります
それは今の側に知られ、その後、Pの配列を発見されました
1つの図では、セットポイントないエッジ内部設定点の数、その結果、任意の2点を見つけます。
点のセットポイントは、フォーカスポイントに接続された少なくとも1つの側の内側にはありません
アイデア:
私たちは、エッジ考える (I 、J )ということ、それは設定正義ので李のGe シーケンス記載されている中で(I 、J )された李のGe 逆の順序の後、順番に定義された(i、j)は(i、j)の逆順であります
これは、上昇系列の数を見つけることです
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 CONSTの INT M = 120 。 typedefの長い 長いLL。 INT G [M] [M]。 LL DP [M]。 インラインint型リード(){ int型の和= 0、X = 1 。 チャー CH = GETCHAR()。 一方、(CH < ' 0 ' || CH> ' 9 ' ){ 場合(CH == ' - ' ) X = 0 。 CH = GETCHAR()。 } 一方、(CH> = ' 0 ' && CH <= ' 9 ' ) の合計 =(合計<< 1)+(和<< 3)+(CH ^ 48)、CH = GETCHAR()。 返す?X和: - 合計を、 } インラインボイドライト(LL X){ 場合(X < 0 ) のputchar(' - ')、X = - X。 もし(X> 9 ) 、書き込み(X / 10 )。 putchar(Xの%10 + ' 0 ' )。 } int型のmain(){ int型 N =(読み取り)、M = read()は、 一方、(M-- ){ int型、U =読み取る()、V = 読み取ります(); G [U] [V] = 1 。 G [V] [U] = 1 。 } DP [ 0 ] = 1 。 以下のために(int型 i = 1 ; iが<= N + 1 iが++; ){ ため(INT J = 0; J <I、J ++ ){ 場合(G [I] [J])// 存在逆序 続けます。 int型の性交= 1 ; 用(int型 P = J + 1 ; P <I、P ++ ){ 場合(G [i]が[P] || G [j]が[P])// 存在逆序 続けます。 他{ 性交 = 0 。 破ります; } } DP [I] + =性交* DP [J]。 } } 書き込み(DP [N+ 1 ])。 リターン 0 ; }