文章
68
粉丝
691
获赞
26
访问
577.8k
https://blog.csdn.net/csyifanZhang/article/details/106146715
↑完整题解
#define inf 0x3f3f3f3f
#define MAX 105
#define ll int
#define vec vector<ll>
#define P pair<ll,ll>
string a[MAX];
ll gx, gy, sx, sy, M, N, T, t;
ll dx[4] = { 0,0,1,-1 }, dy[4] = { 1,-1,0,0 };
int main() {
cin >> T;
while (T--) {
cin >> M >> N >> t;
for (int i = 1; i <= M; i++) {
cin >> a[i];
for (int j = 0; j < N; j++) {
if (a[i][j] == 'G')gx = i, gy = j;
else if (a[i][j] == 'S')sx = i, sy = j;
}
}
//q1存储poison扩散的地方,q2存储用户可以跑到的地方
queue<P> q1, q2; q1.push(P(gx, gy));
vector<P> v1, v2; q2.push(P(sx, sy));
ll cnt = 1;//记录S的个数
//q1.size()>0,气体不能扩散的时候,人就不会动了
for (int i = 1; i <= t && cnt > 0 && q1.size() > 0; i++) {
v1.clear(); v2.clear(); cnt = 0; ll sign = 0;//标记气体是否扩散了
while (!q1.empty()) {
ll tx = q1.front().first, ty = q1.front().second; q1...
登录后发布评论
暂无评论,来抢沙发