Contest1092 - [竞赛班]广搜专题

2023-07-20 13:00:00
3333-07-20 17:00:00
运行中 公开 当前时间:2024-09-20 08:50:03

信息与公告

模板





#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;
}