dfs RE 求助
  • 板块P3395 路障
  • 楼主苏联小渣
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/3/12 17:18
  • 上次更新2023/10/28 06:45:31
查看原帖
dfs RE 求助
399286
苏联小渣楼主2022/3/12 17:18

RT,bfs 已过,打了一遍 dfs 发现 RE 了,不知道是什么原因,求助。

#include <bits/stdc++.h>
using namespace std;
int t, n, pd, px[2010], py[2010], a[1007][1007], vis[1007][1007];
int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
void dfs(int k, int x, int y){
	vis[x][y] = 1;
	if (x == n && y == n) pd = 1;
	if (k >= 1) a[px[k]][py[k]] = 1;
	for (int i=0; i<4; i++){
		int fx = x + dx[i], fy = y + dy[i];
		if (fx <= 0 || fy <= 0 || fx > n || fy > n) continue;
		if (a[fx][fy] || vis[fx][fy]) continue;
		dfs(k+1, fx, fy);
	}
}
int main(){
	scanf ("%d", &t);
	while (t --){
		pd = 0;
		memset(a, 0, sizeof(a));
		memset(vis, 0, sizeof(vis));
		scanf ("%d", &n);
		for (int i=1; i<=(n<<1)-2; i++){
			scanf ("%d%d", &px[i], &py[i]);
		}
		dfs(0, 1, 1);
		printf ("%s\n", pd == 1 ? "Yes" : "No");
	}
	return 0;
}

2022/3/12 17:18
加载中...