文章

68

粉丝

691

获赞

26

访问

581.9k

头像
queue优化的搜索
P1124
发布于2020年5月15日 17:45
阅读数 9.0k

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...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发