2 条题解

  • -5
    @ 2022-10-10 11:55:08
    #include<bits/stdc++.h>
    using namespace std;
    char a[10001][10001];
    int n,sum,maxx=-9999,m,zf[4][2]={{1,0},{0,1},{0,-1},{-1,0}};
    int h=1,t=1;
    struct que{
    	int x;
    	int y;
    };
    struct que dl[10000000]; 
    void bfs(int x,int y,char e){
    	sum=1;
    	dl[t].x=x;
    	dl[t].y=y;
    	t++;
    	while(h<t){
    		for(int i=0;i<4;i++){
    			int tx=dl[h].x+zf[i][0],ty=dl[h].y+zf[i][1];
    			if(tx<0||tx>n||ty<0||ty>m)continue;
    			if(a[tx][ty]==e){
    				a[tx][ty]='0';
    				dl[t].x=tx;
    				dl[t].y=ty;
    				t++;
    				sum++;
    			}
    		}
    		h++;
    	}
    	if(sum>maxx)maxx=sum;
    }
    int main(){
    	cin>>n>>m;
    	for(int i=0;i<=n;i++){
    		gets(a[i]);
    	}
    	for(int i=0;i<=n;i++){
    		for(int j=0;j<=m;j++){
    			if(a[i][j]>'0'){
    				char o=a[i][j];
    				a[i][j]='0';
    				bfs(i,j,o);
    				sum++;
    			}
    		}
    	}
    	cout<<maxx;
    	return 0;
    }
    

    信息

    ID
    377
    时间
    1000ms
    内存
    64MiB
    难度
    7
    标签
    递交数
    185
    已通过
    38
    上传者