70分求调直接有爆红
  • 板块P1141 01迷宫
  • 楼主egwyg
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/27 15:24
  • 上次更新2025/1/27 20:17:01
查看原帖
70分求调直接有爆红
1457572
egwyg楼主2025/1/27 15:24
#include<iostream>
#include<string.h>
using namespace std;
char map[1005][1005];
bool check[1005][1005];
int dp[1005][1005];
int x[4] = { 0,0,-1,1 };
int y[4] = { -1,1,0,0 };int m, n;
int cun[100005];
int dfs(int i, int j,int num,int num1) {
	int a = num1;
	
if (check[i][j]==true) return cun[num]=cun[dp[i][j]];
cun[num]++;
check[i][j] = true;
	for (int s = 0; s < 4; s++) {
		int x1 = j + x[s];
		int y1 = i + y[s];
		
		if (map[y1][x1] != map[i][j] && check[y1][x1] == false&&(x1>=1&&y1>=1&&x1<=m&&y1<=m)) {
			dp[i][j] = num;
			/*num1 = max(num1,);*/
			dfs(y1, x1, num, num1 + 1);
		}
	}
	return num1;
}
int main() {
	
	cin >> m >> n;
	for (int i = 1; i <= m; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> map[i][j];
		}
	}
	memset(dp, -1, sizeof(dp));
	for (int i = 1; i <= n; i++) {
		int a, b;
		cin >> a >> b;
		 dfs(a, b, i,1);
	}
	for (int i = 1; i <= n; i++) {
		cout << cun[i] << endl;
	}
}
2025/1/27 15:24
加载中...