幅優先検索と深さ優先検索の骨格


深さ優先検索:再帰関数で深くまで。
関数1開始→関数1−1開始→関数1−1終了→関数1終了
なので、スタックと同じ.

void dfs(int x, int y) {
	//...の条件のとき再帰せず、終了。
	if(...) {...}
	//..の条件のとき再帰せず、終了。
	if(..) {..}
	//再帰関数で、さらに深く上っていく。
	if(!!!) {dfs(x+1, y)}
}

2011.04.07追記
スタックのいいところは、履歴を簡単に作れるところ.


幅優先検索:キューでほふく前進

int i;
void bfs(int x, int y)
{
	//初期化
	int i = 0;
	//ループ
	while(que.size()) {
		//キューの先頭を取り出す。
		int v = que.front(); que.pop();
		//当てはまれば終了
		{ if(..) {break;}
		//継続するなら、キューに入れて進む。
		que.push(..);
		i++;
	}
}