文章

13

粉丝

0

获赞

9

访问

352

头像
生化武器 题解:BFS
P1126
发布于2026年2月20日 00:30
阅读数 10

#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用来算刚好充满整个房间需要的时间
     ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发