已 AC,但不明所以
查看原帖
已 AC,但不明所以
593403
PanDaoxi楼主2023/10/28 14:57

第一次交和最后一次交,只改了一下标记走过的位置。
但是放在遍历四个方向的循环中就 AC,放在外面就 TLE。
蒟蒻不明白为啥,求大佬解答!!

原始:

bool check(int mid){
	memset(vis, 0, sizeof(vis));
	queue <node> Q;
	Q.push({1, 1});
	vis[1][1] = true;
	while(!Q.empty()){
		node fr = Q.front(); Q.pop();
		vis[fr.x][fr.y] = true;
		if(fr.x == n) return true;
		for(int i = 1; i <= 4; i++){
			int xx = fr.x + fx[i], yy = fr.y + fy[i];
			if(xx >= 1 && xx <= n && yy >= 1 && yy <= m && !vis[xx][yy]){
				if(p[xx][yy] <= mid) Q.push({xx, yy});
			}
		}
	}
	return false;
}

最后:

bool check(int mid){
	memset(vis, 0, sizeof(vis));
	queue <node> Q;
	Q.push({1, 1});
	vis[1][1] = true;
	while(!Q.empty()){
		node fr = Q.front(); Q.pop();
		if(fr.x == n) return true;
		for(int i = 1; i <= 4; i++){
			int xx = fr.x + fx[i], yy = fr.y + fy[i];
			if(xx >= 1 && xx <= n && yy >= 1 && yy <= m && !vis[xx][yy]){
				if(p[xx][yy] <= mid) Q.push({xx, yy}), vis[xx][yy] = true;
			}
		}
	}
	return false;
}
2023/10/28 14:57
加载中...