求助!
  • 板块P1141 01迷宫
  • 楼主CreeperXLX
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/10/12 21:27
  • 上次更新2023/11/4 03:57:39
查看原帖
求助!
300049
CreeperXLX楼主2021/10/12 21:27
#include<bits/stdc++.h>
using namespace std;
int n,m;
int area[1005][1005];
bool vis[1005][1005];
int f[1000005];
int tx[4]={1,0,-1,0};
int ty[4]={0,1,0,-1};
struct beta{
	int x,y;
};
int main (){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			char c;
			cin>>c;
			area[i][j]=int(c)-'0';
		}
	}
	int S=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(vis[i][j]==0){
				S++;
				int sum=1;
				memset(vis,0,sizeof(vis));
				queue<beta> q;
				q.push(beta{i,j});
				vis[i][j]=S;
				while(!q.empty()){
					beta temp=q.front();
					q.pop();
					for(int k=0;k<4;k++){
						int nx=tx[k]+temp.x;
						int ny=ty[k]+temp.y;
						if(nx>=1&&nx<=n&&ny>=1&&ny<=n&&vis[nx][ny]==0&&area[nx][ny]!=area[temp.x][temp.y]){
							sum++;
							vis[nx][ny]=S;
							q.push(beta{nx,ny});
						}
					}
				}
				f[S]=sum;
			}
		}
	}
	while(m--){
		int sx,sy;
		cin>>sx>>sy;
		cout<<f[vis[sx][sy]]<<endl;
	}
	return 0;
}

WA了,dalao们能看看吗

2021/10/12 21:27
加载中...