Contest1096 - [竞赛班晚班]广搜专题-晚班
2023-07-20 18:00:00
3333-07-20 22:00:00
信息与公告
模板
#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; }