分析
点としてのボート
レベリングエッジとして
見つかった通信ブロックが通信ブロックのN-1辺の回答パリティ影響の数よりも多いです
だから、互いに素セット維持するために
コード
#include <ビット/ STDC ++ H>
使用して 名前空間STDを、
INT FA [ 200100 ]、SIZ [ 200100は ]、である [ 200100 ]、回答、N、M。
インラインINT SF(int型 x)は{ 返す FAを[X] == X X:FA [X] = SF(FA [X]);}
int型のmain(){
int型I、J、K。
scanf関数(" %d個の%のD "、&N、&M)。
用(i = 1 ; iが<= N; iは++)FA [I] = I、SIZ [I] = 1 。
用(i = 1 ; iが<= M; iは++ ){
int型X、Y。
scanf関数(" %dの%のD "、およびX&Y)。
もし(!SF(X)= SF(Y)){
SIZ [SF(Y)] + = SIZ [SF(X)]。
である [SF(Y)] ^ = である[SF(X)]。
FA [SF(X)] = SF(Y)。
} そう である [SF(X)] ^ = 1 ;
}
ため(i = 1 ; iが<= N; iは++)場合(SF(I)== I)アンス+ = SIZ [I] - (である [I]?0:1 )。
coutの << アンス。
リターン 0 ;
}