5 条题解

  • 0
    @ 2025-3-16 18:09:31
    #include<bits/stdc++.h>
    using namespace std;
    
    const int N=1e4+10;
    char n[N][N];
    int w,h,cnt,ans,a,b,k=1;
    int xx[4]={-1,1,0,0};
    int yy[4]={0,0,1,-1};
    bool f(int x,int y){
    	if(n[x][y]=='.'&&x>=1&&x<=h&&y>=1&&y<=w){
    		return 1;
    	}
    	return 0;
    }
    
    void dfs(int x,int y){
    	n[x][y]='#';
    	for(int i=0;i<4;i++){
    		int nx=x+xx[i];
    		int ny=y+yy[i];
    		if(f(nx,ny)) 
    		{
    			k++;
    		    dfs(nx,ny);
    		}
    	}
    }
    
    int main(){
    	while(cin>>w>>h){
    		if(w==0&&h==0){
    			break;
    		}
    		for(int i=1;i<=h;i++){
    			for(int j=1;j<=w;j++){
    				cin>>n[i][j];
    			    if(n[i][j]=='@'){
    			    	a=i;b=j;
    				}
    			}
    		}
    		k=1;
    		dfs(a,b);
    		cout<<k<<endl;
    	}
    	return 0;
    }
    
    
    

    信息

    ID
    3004
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    446
    已通过
    104
    上传者