luogu P2853 [USACO06DEC】牛ピクニック牛ピクニック]

反対側には、+ 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を返します。
}

おすすめ

転載: www.cnblogs.com/Lates/p/12040505.html