友人の3008円
★★入力ファイル:friendscircle.in
出力ファイル:friendscircle.out
の単純な比較
制限時間:1秒メモリ制限:256メガバイト
説明[タイトル]
NOIクラスがあるため一緒に過ごすために、限られた時間、プラスいくつかの学生の間ではなく、一部の学生の間でマイクロチャンネルの、n個の研修生を持っています。プラスB型マイクロ場合、すなわち、互いにプラスマイクロチャネルの関係を仮定し、Bは、マイクロチャネルを追加します。
今NOIクラス1の学生から出てくるニュース速報があり、それぞれのNOI研修生のニュースは、友人の輪を転送されます見て、彼のマイクロ文字の友人が表示されます追加。NOIクラスには学生が(されていないので、彼の関係のためと)転送されていないされていません。
クラスの生徒の間に友達のNOIマイクロチャネルの関係を教えて、私は多くの学生が最終的にこのニュースを参照してくださいどのように尋ねます。
[入力形式]
入力の最初の行は二つの整数、最初の整数n、参加者の数を含んでいます。1からnまでの参加者から番号が振られています。第2の整数mを、mは人間の友人は、マイクロ文字を追加した発現しました
二つの整数、Bの次のm行は、空白で区切られた、マイクロチャネルは、友人は参加者のこれらの二つの数字の間に付加表します。
[出力形式]
出力は、学生の数を表す整数は、最終的にニュースを見ました。
[サンプル入力]
6 5 1 2 2 3 4 2 3 4 5 6
[サンプル出力]
4
[注]
1 <= N <= 1000、1 <= M <= 10000。
[ソース]
このタイプの。
これは本当に愚かな質問であります
小さな定数
暴力のDFSは走りました!
<ビット/ STDC ++ H>の#include の#define MAXN 1005 使って 名前空間STDを、 INTのN、M。 ベクター < INT > [MAXN] V。 BOOL VIS [MAXN]。 int型 ANS = 0 ; ボイド DFS(int型P) { 場合(VIS [P]) のリターン; ANS ++ ; VIS [P] = 真; 以下のために(int型 i = 0 ;()iはV <[P] .sizeをiは++ ) DFS(V [P] [I])。 } int型メイン() { freopenは(" friendscircle.in "、" R " 、STDIN)。 freopenは(" friendscircle.out "、" W " 、STDOUT)。 scanf関数(" %d個の%のD "、&N、&M)。 以下のために(int型 I = 1 ; I <= M; iは++ ) { int型のX、Y。 scanf関数(" %dの%のD "、およびX&Y)。 V [X] .push_back(Y)。 V [Y] .push_back(X)。1 ); printf(" %dの" 、ANS)。 リターン 0 ; }