全WA求助
  • 板块P1141 01迷宫
  • 楼主szk2022
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/6 18:26
  • 上次更新2023/12/6 21:10:54
查看原帖
全WA求助
790279
szk2022楼主2023/12/6 18:26
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,vis[1010][100010],ans,xx,yy;
char num;
int dx[5]={0,1,-1,0,0};
int dy[5]={0,0,0,-1,1};
struct m{
	int num,ans;	
}mp[1010][100010];
struct node{
	int x,y;
}a;
queue<node> q;
queue<node> v;
void color(){
	for(int i=0;i<=n+1;i++){
		for(int j=0;j<=m+1;j++){
			if(i>=1 && i<=n && j>=1 && j<=m){
				continue;
			}else{
				mp[i][j].num=3;
			}
		}
	}
}
void bfs(){
	while(!q.empty()){
		node now;
		now.x=q.front().x,now.y=q.front().y;		
		v.push(now);
		q.pop();
		for(int i=1;i<=4;i++){
			int nx=now.x+dx[i],ny=now.y+dy[i];
			if(nx>=1 && nx<=n && ny>=1 && ny<=m){
				if(vis[nx][ny]==0){
					if(mp[now.x][now.y].num==1){
						if(mp[nx][ny].num==0){
							vis[nx][ny]=1;
							ans++;
							node tmp;
							tmp.x=nx,tmp.y=ny;
							q.push(tmp);
						}
					}else{
						if(mp[nx][ny].num==1){
							vis[nx][ny]=1;
							ans++;
							node tmp;
							tmp.x=nx,tmp.y=ny;
							q.push(tmp);
						}
					}
				}
			}
		}
	}
}
signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>num;
			mp[i][j].num=num-'0';
		}
	}
	color();
	for(int i=1;i<=m;i++){
		ans=1;
		cin>>xx>>yy;
		if(vis[xx][yy]){
			cout<<mp[xx][yy].ans;
		}else{
			a.x=xx,a.y=yy;
			q.push(a);
			vis[xx][yy]=1;
			bfs();
			while(!v.empty()){
				mp[v.front().x][v.front().y].ans=ans;
				v.pop();
			}
			cout<<ans<<endl;			
		}

	}
}
2023/12/6 18:26
加载中...