主なアイデア:
ノー;
キーポイント:
ノー;
#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 。 }