吉林大学のコンピュータベースのテスト接続グラフ簡単

主なアイデア:

ノー;

 

キーポイント:

ノー;

 

#include <iostreamの> 
する#include < ストリング > 
の#include <ベクトル> 
の#include <地図>
 使用して 名前空間STDを、

const  int型 MAXN = 1020 ; 

INT 父[MAXN]。

整数M、N。
ブールMA [MAXN] [MAXN]。

ボイドのinit(INT N){
     ためINT iは= 0 ; iが<= N; I ++ 
        父[I] = I。
} 

INT findfather(INT X){
     一方(X!=父[X]){ 
        X = 父[X]。
    } 
    戻りX。
} 

ボイド unfather(int型 A、int型B){
     int型 AA = findfather()。
    INT BB = findfather(B)。
    父[AA] = BB; 
} 

INT cntnum(INT N){
     int型 CNT = 0 以下のためにINT iが= 1 ; I <= N; I ++ ){
         場合(父[I] == I)
            CNT ++; 
    } 
    戻りCNT。
} 

int型のmain(){
     一方(CIN >> N >> M){
         場合(N == 0 続けます
        フィル(MA [ 0 ]、MA [ 0 ] + MAXN * MAXN、)。
        INIT(N)
        int型のA、B;
        以下のためにINT iが= 0 ; I <M、I ++ ){ 
            CIN >> B。
            もし(!MA [A] [B]){ 
                マサチューセッツ州[A] [B] = MA [B] [A] = ; 
                unfather(B)
            } 
        } 
        もし(cntnum(N)=!1 
            COUT << " NO " << ENDL。
        他の
            裁判所未満 << " YES " << てendl; 
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/songlinxuan/p/12424156.html