BFS 70pts TLE求调
  • 板块P1141 01迷宫
  • 楼主Na1L0n9
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/15 11:02
  • 上次更新2024/8/15 14:27:48
查看原帖
BFS 70pts TLE求调
1045932
Na1L0n9楼主2024/8/15 11:02
#include <bits/stdc++.h>
using namespace std;
struct node {
	int x, y;
};
int cnt;
int dx[5] = {0, -1, 0, 1, 0},
	dy[5] = {0, 0, 1, 0, -1};
char ch[1010][1010];
bool vis[1010][1010];
int main () {
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			cin >> ch[i][j];
		}
	}
	while (m--) {
		int x, y;
		queue <node> q;
		cin >> x >> y;
		q.push({x, y});
		cnt = 1;
		memset(vis, 0, sizeof(vis));
		vis[x][y] = true;
		while (!q.empty()) {
			node cur = q.front();
			q.pop();
			for (int i = 1; i <= 4; i++) {
				int nx = cur.x + dx[i], ny = cur.y + dy[i];
				if (nx && nx <= n && ny && ny <= n && ch[nx][ny] != ch[cur.x][cur.y] && !vis[nx][ny]) {
					q.push({nx, ny});
					vis[nx][ny] = true;
					cnt++;
				}
			}
		}
		cout << cnt << endl;
	}
}
2024/8/15 11:02
加载中...