SEERC 2018反転

質問の意味:

配列インデックス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 ; 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/starve/p/11622086.html