UB?
  • 板块P1141 01迷宫
  • 楼主Nygglatho
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/2/5 09:11
  • 上次更新2023/10/24 01:39:45
查看原帖
UB?
322620
Nygglatho楼主2023/2/5 09:11

翻了一下 20212021 年的代码,下了第一个测试点,发现 Windows 输出正确,但是洛谷 WA

#include <bits/stdc++.h>
using namespace std;

int n, m, s[500001], g[1001][1001];
bool t[1001][1001];

void dfs(int x, int y, int k, bool ist) {
	if (x <= 0 || x > n || y <= 0 || y > n || ist != t[x][y] || g[x][y] != -1) return;
	++s[k];
	g[x][y] = k;
	dfs(x - 1, y, k, !ist);
	dfs(x + 1, y, k, !ist);
	dfs(x, y - 1, k, !ist);
	dfs(x, y + 1, k, !ist);
}

int main() {
	cin >> n >> m;
	for (int i = 1; i <= n; ++i) {
		getchar();
		for (int j = 1; j <= n; ++j) {
			char ch = getchar();
			if (ch == '1') t[i][j] = true;
			else t[i][j] = false;
			g[i][j] = -1;
		}
		
	}
/*	for (int i = 1; i <= n; ++i) {

		for (int j = 1; j <= n; ++j) cout << t[i][j] << ' ';
		cout << endl;
	}*/
	for (int i = 1; i <= m; ++i) {
		int x, y;
		cin >> x >> y;
		if (g[x][y] != -1) s[i] = s[g[x][y]];
		else dfs(x, y, i, t[x][y]);
	}
	for (int i = 1; i <= m; ++i) cout << s[i] << endl;
}
2023/2/5 09:11
加载中...