文章

0

粉丝

2

获赞

7

访问

3013

头像
感觉有点歧异,但是能AC
P1126
发布于2022年8月1日 20:01
阅读数 560

#include<bits/stdc++.h>
using namespace std;

const int maxn = 30+5;
const int INF = 0x3f3f3f3f;

char mpt[maxn][maxn];
int dir[4][2]={0,1,1,0,-1,0,0,-1};

struct node{
    int x,y;
    node(int x, int y):x(x),y(y){}
};

int n,m,t;

bool bfs(int sx, int sy, int t){
    // init
    queue<node> q;
    q.push(node(sx,sy));
    mpt[sx][sy]='#';
    bool flag;  //true:filled; false:unfilled
    
    //ending conditions: t<0
    while(t--){
        //注意这里需要保存q.size
        //不可使用empty进行判断,这样的话就停不下来了
        //因为t每次减1,都是只对当前的队列内的元素进行更新并更新为下一时刻的序列
        int q_size = q.size();
        while(q_size--){
            node now = q.front();
            q.pop();
            for(int i=0;i<4;i++){
                int xn = now.x + dir[i][0];
                int yn = now.y + dir[i][1];
                if(xn>=1 && xn<=n && yn>=1 && yn<=m && mpt[xn][yn]=='.'){
                    mpt[xn][yn] = '#';
    ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发