#include<iostream>	
#include<string>	
#include<queue>		//小广搜必备队列

using namespace std;//queue需要std



int main()
{
	//搜索(Search)是作为一个 OIer 必需会且较为基础的算法
	//它的本质是有规律、有策略地枚举所有可能的情况,并在其中剪除无效状态,达到较快的求解速度
	//根据搜索扩展策略的不同、搜索分为 深度优先搜索(DFS)和 广度优先搜索(BFS)两种
	
	//广度优先搜索(Breadth-First Search,简称BFS)是搜索的一种,他的策略是“由近及远”
	//先扩展最近的结点、再一点一点往外搜
	//因为它的策略是“由近及远”,而C++不能一次执行多条语句(fvv),所以我们必须用 队列 存储所有的节点信息、
	//在将初始状态入队后,每次取出队首,如果寻找到合法的操作就入队
	//循环直到队列为空、即搜索完成
	
	//代码框架
	
	/*
	
	queue<State> q;
	while(!q.empty)
	{
		State t=q.front();
		q.pop()
		
		for(枚举所有可扩展状态)
			if(是合法的)
				q.push(可扩展状态);	//同时可能需要维护某些必要信息
	}
	
	*/
	
	//广度优先搜索有两种主要题型
	
	//1. 最短路
	//因为广度优先搜索的特性,它总能找到操作步骤最少的解,所以广度优先搜索适合寻找所谓的“最短路”
	
	//经典题目:
	//#A1330. 【例8.3】最少步数
	//#A1252. 走迷宫
	//#A1255. 迷宫问题
	//#A1360. 奇怪的电梯(lift)
	
	//2. 连通块
	//连通块可以理解为一个点的集合,若两点间可直接或间接的连接则两点在同一连通块中
	//这个……广搜深搜都可以
	
	//经典题目:#A1329. 【例8.2】细胞
}