友達のコグ3008円

友人の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 ; 
}

 

おすすめ

転載: www.cnblogs.com/Tidoblogs/p/11344156.html