4 solutions

  • 0
    @ 2022-2-20 10:06:32
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,ans=0;
    char f[25][25];
    int dx[4]={0,0,-1,1};
    int dy[4]={-1,1,0,0};
    void dfs(int x,int y){
    	if(f[x][y]=='#'){
    		return ;
    	}
    	f[x][y]='#';
    	ans++;
    	for(int i=0;i<4;i++){
    		int nx=x+dx[i];
    		int ny=y+dy[i];
    		if(f[nx][ny]=='.'&&nx>0&&nx<=m&&ny>0&&ny<=n){
    			dfs(nx,ny);
    		}
    	}
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=m;i++){
    		for(int j=1;j<=n;j++){
    			cin>>f[i][j];
    		}
    	}
    	for(int i=1;i<=m;i++){
    		for(int j=1;j<=n;j++){
    			if(f[i][j]=='@'){
    				dfs(i,j);
    			}
    		}
    	}
    	cout<<ans;
    	return 0;
    }

    Information

    ID
    1233
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    4
    Tags
    # Submissions
    174
    Accepted
    80
    Uploaded By