反対側には、+ DFSを建て###
ない牛、あなたは、DFSをこの牧場を制御して、地元の牛のピクニックとして各点を列挙していない場合牧場VIS記録と、牛の牧草地があるかどうかとFレコードは、裁判官の牧場のために再びアクセス、およびすることができません牛があり、牧場は、ポイントはそれが行われ、行く列挙することはできません。
###配列最初の時間を空にするたびに、DFS、VISは、私は結果WA、空に支払うことを忘れていることを注記し、30ポイント
$コード:$
書式#include <iostreamの> の#include <CStringの> の#include <cstdioを> std名前空間を使用しました。 インライン読み取り(){INT レジスタINT X = 0、V = 1、CH = GETCHAR()。 一方、(!isdigit(CH)){IF(CH == ' - ')V = -1; CH = GETCHAR();} ながら(isdigit(CH)){X =(x << 3)+(X < <1)+(CH ^ '0'); CH = GETCHAR();} 戻りX * V。 } CONST INT MAX = 1005、N = 10005。 int型K、N、M。 構造体のエッジ{ int型のE、次。 } E [N]。 int型ヘッド[MAX]、CNT; インラインボイド追加(INT U、V INT){ E [CNT] .E = V。 E [CNT] .next =頭部[U]。 ヘッド[U] = CNT ++。 } ブールF [MAX]、VIS [MAX]; U、V = 0回答をint型。 (今INT)ボイドDFS { VIS [今] = 1。 {(私は、電子を= [I] .next; I iはヘッド= INT [今]レジスタ)のために DFS(E [i]が。E)場合(VIS [E [i]は.E]!)。 } } int型のmain(){ K =読み取る()、N =(読み取り)、M =(読み取り)。 {(; I <= K ++ I iは1 = intを登録する)のために F [リード()] = 1。 } (iは1 = intを登録する; I <= M; ++ i)に対する{ U =読み取る()、V =(読み取り) (V、U)を追加します。 } (iは1 = intを登録する; I <= N; ++ i)に対する{ memsetの(VIS、0、はsizeof(VIS))。 DFS(I); {(; J <= N ++ J INT J = 1レジスタ)のための IF(!VIS [J] = 1つの&& F [J] == 1){ 後藤端部を、 } } ++アンス。 終わり:; } のprintf( "%dの\ n"は、ANS)。 0を返します。 }