文章
13
粉丝
0
获赞
9
访问
352
#include <bits/stdc++.h>
using namespace std;
struct node{
int x,y;
int step;
};
node start;
int n,m,t;
char room[35][35]={'\0'};
int vis[35][35]={0};//0表示未搜索到的地方,1表示t时间内能抵达,2表示t时间内无法抵达但之后能抵达
int step[4][2]={0,1,1,0,0,-1,-1,0};//右下左上
void bfs(node& start,int t,bool& alive){
queue<node> qu;
qu.push(start);
int xi=start.x;
int yi=start.y;
vis[xi][yi]=1;
int step_max=0;
while(!qu.empty()){
node now=qu.front();
int nx=now.x;
int ny=now.y;
qu.pop();
for(int i=0;i<4;i++){
int cx=nx+step[i][0];
int cy=ny+step[i][1];
if(room[cx][cy]=='.'&&vis[cx][cy]==0){
qu.push(node{cx,cy,now.step+1});
//t时间已耗尽的话,用2去标记vis
if(now.step+1>t)
vis[cx][cy]=2;
else
vis[cx][cy]=1;
//step_max用来算刚好充满整个房间需要的时间
...
登录后发布评论
暂无评论,来抢沙发