P1141【九个RE一个WA】【bfs】
  • 板块灌水区
  • 楼主Tis员工
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/7/22 11:31
  • 上次更新2023/10/27 18:57:24
查看原帖
P1141【九个RE一个WA】【bfs】
430920
Tis员工楼主2022/7/22 11:31

Rt.

#include<bits/stdc++.h>
using namespace std;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
int n,m,h,t=1,k,x,y;
int a[1005][1005];
char c;
bool p[1005][1005];
int q[1000005][3];
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int l[1005][1005],r[1000005];
int main()
{
    //freopen(".in","r",stdin);freopen(".out","w",stdout);
    //ios::sync_with_stdio(false);
    n=read();m=read();
    for(int i=1;i<=n;i++){
    	for(int j=1;j<=n;j++){
    		c=getchar();
    		a[i][j]=c-'0';
		}getchar();
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(!p[i][j]){
				h=0;t=1;
				p[i][j]=1;k++;
				q[1][1]=i;q[1][2]=j;l[i][j]=k;
				while(h<t){                                                 
					h++;                                                
					for(int i=0;i<4;i++){                             
						int xx=q[h][1]+dx[i];                          
						int yy=q[h][2]+dy[i];                         
						if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&!p[xx][yy]){    
							if(a[q[h][1]][q[h][2]]^a[xx][yy]){        
								t++;p[xx][yy]=1;                
								q[t][1]=xx;q[t][2]=yy;l[xx][yy]=k;      
							}                                 
						}                               
					}                                 
				}     
				r[k]=t;
			}
		}
	}
	for(int i=1;i<=m;i++){
		x=read();y=read();
		cout<<r[l[x][y]]<<endl;
	}
	return 0;
}

2022/7/22 11:31
加载中...