文章
28
粉丝
226
获赞
53
访问
143.8k
#include <iostream>
#include <cstring>
#include <queue>
#include <vector>
using namespace std;
const int len = 105;
// 迷宫
char gra[len][len];
// 方向
int dir[4][2] = {-1,0,1,0,0,-1,0,1};
struct node{
int x,y;
char v;
};
int bfs(node G, node S, int t){
int alive = 1;
vector<queue<node>> que(t+1, queue<node>());
que[0].push(G);
que[0].push(S);
for(int i = 0;i < t;i++){
int Gflag = 0;
while(!que[i].empty()){
node now = que[i].front();
que[i].pop();
if(now.v == 'G'){
for(int j = 0;j < 4;j++){
int x = now.x + dir[j][0];
int y = now.y + dir[j][1];
if(gra[x][y] != 'X' && gra[x][y] != 'G'){
Gflag = 1;
if(gra[x][y] == 'S'){
alive--; // 2,4
}
...
登录后发布评论
一旦气体无法扩散,人也就不会走了,可以直接break。如何判断气体无法扩散呢?只要一次扩散过程中气体的格数不再增加即可。