社区讨论
DFS 90pts 求助!
P114101迷宫参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @loilfkvx
- 此快照首次捕获于
- 2023/11/03 20:30 2 年前
- 此快照最后确认于
- 2023/11/03 21:39 2 年前
CPP
#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
CPP回复
共 3 条回复,欢迎继续交流。
正在加载回复...