Contest1096 - [竞赛班晚班]广搜专题-晚班

2023-07-20 18:00:00
3333-07-20 22:00:00
运行中 公开 当前时间:2024-11-10 13:34:59

信息与公告

模板



#include<bits/stdc++.h>
using namespace std;
struct node{
	int x,y,d;//xy坐标 d:步数  不一定是地图中,不一定要步数
};
queue<node> q;//队列
int vis[100][100];//vis 也可以是二维的 
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int main(){
	//输入地图、找起点等 
	
	//开始广搜 
	q.push(node{1,1,0});//放入起点 假设起点是1,1 
	vis[1][1]=1;//标记起点 
	while(q.size()){//当队列内还有任务时 
		node f=q.front();//获得任务队列的第一个
		q.pop();//队列中删除第一个
		if(f.x==114&&f.y==514){//根据题目判断 当前点对结果的影响
			
		}
		//搜索周围的点
		for(int i=0;i<4;i++){//4个方向 或其他情况 
			int tx=f.x+dir[i][0];
			int ty=f.y+dir[i][1];
			if(vis[tx][ty]==0/*&&在地图内,等条件*/){
				q.push(node{tx,ty,f.d+1});//新node放入队列中,步数+1
				vis[tx][ty]=1;//每个点只会被放进队列中一次 
			}
		}
	}
//	cout<<ans; //输出结果 
	return 0;
}