70分,求助!!!
  • 板块P1141 01迷宫
  • 楼主zwlywy
  • 当前回复12
  • 已保存回复12
  • 发布时间2022/10/25 17:04
  • 上次更新2023/10/27 05:57:16
查看原帖
70分,求助!!!
616431
zwlywy楼主2022/10/25 17:04
#include <iostream>
#include <cstring>
using namespace std;
int dis[4][2] = {
	{1, 0},
	{0, 1},
	{0, -1},
	{-1, 0}
};
int n, m, sum = 1;
int a[1001][1001];
bool vis[1001][1001];
char map[1001][1001];
void dfs(int sx, int sy) {
	if (sum >= n * n) return;
	for (int i = 0;i < 4;i++) {
		int xx = sx + dis[i][0],
			yy = sy + dis[i][1];
		if (xx >= 1 && yy >= 1 && yy <= n &&
			xx <= n && vis[xx][yy] == 0 && map[xx][yy] != map[sx][sy]) {
			sum++;
			vis[xx][yy] = 1;
			dfs(xx, yy);
		}
	}
}
int main() {
	cin >> n >> m;
	for (int i = 1;i <= n;i++) {
		for (int j = 1;j <= n;j++) {
			cin >> map[i][j];
		}
	}
	for (int i = 0;i <  m;i++) {
		int a, b;
		memset(vis, 0, sizeof(vis));
		cin >> a >> b;
		vis[a][b] = 1;
		dfs(a, b);
		cout << sum << endl;
		sum = 1;
	}
}
2022/10/25 17:04
加载中...