玄学RE
查看原帖
玄学RE
121813
老子是北瓜楼主2020/8/10 20:23
#include <iostream>
#include <cstdio>
using namespace std;
int n,m,len;
bool g[1005][1005],flag[1005][1005];
int ans[1005][1005];
char c;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int q[1005][2];
int sum;
void dfs(int x,int y){
    for(int i=0; i<=3; ++i){
        int tx=x+dx[i];
        int ty=y+dy[i];
        if(tx>=1 && tx<=n && ty>=1 && ty<=n && g[x][y]!=g[tx][ty] && flag[tx][ty]==0)
        {
        	flag[tx][ty]=1;
        	++sum;
        	++len;
        	q[len][0]=tx;
        	q[len][1]=ty;
            dfs(tx,ty);
        }
    }
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1; i<=n; ++i)
	    for(int j=1; j<=n; ++j){
			cin>>c;
	        if(c=='1')
				g[i][j]=1;
	    }
	for(int i=1; i<=n; ++i)
    	for(int j=1; j<=n; ++j){
	        if(flag[i][j]==0)
	        {
	    	    len=0; sum=1;
	            flag[i][j]=1;
	            dfs(i,j);
	            for(int k=1; k<=len; ++k)
	           		ans[q[k][0]][q[k][1]]=sum;
	            ans[i][j]=sum;
	        }
		}
    for(int i=1; i<=m; ++i)
	{
		int qx,qy;
		cin>>qx>>qy; 
   		cout<<ans[qx][qy]<<endl;
	}
    return 0;
}

搜索部分没啥问题,似乎是qx和qy没有读进去?

2020/8/10 20:23
加载中...