# 蒟蒻求助!
  • 板块P1141 01迷宫
  • 楼主lingquan
  • 当前回复16
  • 已保存回复16
  • 发布时间2023/8/7 20:52
  • 上次更新2023/11/3 05:19:05
查看原帖
# 蒟蒻求助!
893704
lingquan楼主2023/8/7 20:52

用的广搜 看了好久没看出来哪里有问题 代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>//abs(a)整数的绝对值
#include <queue>//fabc(a)小数的绝对值
#include <stack>
#include <map>
#include <cstdlib>
#include <ctime>
#include <unordered_map>
#include <climits>
#include <set>
#include <bitset>
using namespace std;
int n,m;
int xa,ya;
int a[1005][1005];
bool b[1005][1005];
int ans=1;
int xx[8]={-1,1,0,0};
int yy[8]={0,0,-1,1};

struct node{
	int x,y;
};

int bfs(){
	queue<node> q;
	q.push(node{xa,ya});
	while(q.size()){
		node p=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			int nx=p.x+xx[i];
			int ny=p.y+yy[i];
			if(b[nx][ny]==0 && a[p.x][p.y]!=a[nx][ny] && nx>=1 && nx<=n && ny>=1 && ny<=m){
				b[nx][ny]=1;
				q.push(node{nx,ny});
				ans++; 
			}
		}
	}
	return ans;
}

int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			scanf("%1d",&a[i][j]);
		}
	}
	for(int i=1;i<=m;i++){
		scanf("%d%d",&xa,&ya);
		memset(b,0,sizeof(b));
		b[xa][ya]=1;
		ans=1;
		printf("%d\n",bfs());
	}
	return 0;
}
2023/8/7 20:52
加载中...