DFS 90pts 求助!
  • 板块P1141 01迷宫
  • 楼主yzm0325
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/11/3 20:24
  • 上次更新2023/11/3 21:39:24
查看原帖
DFS 90pts 求助!
804115
yzm0325楼主2023/11/3 20:24
#include <bits/stdc++.h>
using namespace std;
int n, m, ans[1010][1010], ans1[1010], a[1010][1010];
bool vis[1010][1010];
int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};
bool isok(int x) {
	if(x > n || x < 1) return 0;
	return 1;
}
int dfs(int x, int y, int bj) {
    ans[x][y] = bj;
    if(vis[x][y]) return 0;
    int ans2 = 1;
    vis[x][y] = 1;
    for(int k = 0; k < 4; k++) {
    // 	cout << isok(x + dx[k]) << isok(y + dy[k]) << (!a[x][y] == a[x + dx[k]][y + dy[k]]) << '\n';
        if(isok(x + dx[k]) && isok(y + dy[k]) && !a[x][y] == a[x + dx[k]][y + dy[k]])
            ans2 += dfs(x + dx[k], y + dy[k], bj);    	
	}
    return ans2;
}
int main() {
    cin >> n >> m;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++) {
            scanf("%1d", &a[i][j]);
//			printf("%1d %d %d\n", a[i][j], i, j);    	
		}
    for(int i = 1; i <= m; i++) {
        int x, y;
        cin >> x >> y;
        if(!ans[x][y]) ans1[i] = dfs(x, y, i);
        cout << ans1[ans[x][y]] << '\n';
    }
    return 0;
}

WA on #2

2023/11/3 20:24
加载中...