Counting Sheep

10598 단어

사고의 방향


4
  • 간단한 dfs로 코드를 직접 넣습니다

  • 코드

    #include 
    #include 
    #include 
    using namespace std;
    const int N=150;
    char f[N][N];
    bool st[N][N];
    int n,m;
    int dx[4]={1,-1,0,0};int dy[4]={0,0,1,-1};
    void dfs(int x,int y){
        st[x][y]=true;
        for(int i=0;i<4;i++){
            int a=x+dx[i];
            int b=y+dy[i];
            if(a<1||a>n||b<1||b>m)continue;
            if(f[a][b]!='#'||st[a][b])continue;
            dfs(a,b);
        }
    }
    int main(){
        int T;
        cin >> T;
        while(T--){
            memset(st,false,sizeof st);
            cin >> n >> m;
            for(int i=1;i<=n;i++){
                for(int j=1;j<=m;j++){
                    cin >> f[i][j];
                }
            }
            int ans=0;
            for(int i=1;i<=n;i++){
                for(int j=1;j<=m;j++){
                    if(f[i][j]=='#'&&!st[i][j]){
                        dfs(i,j);
                        ans++;
                    }
                }
            }
            cout << ans << "
    "
    ; } }

    좋은 웹페이지 즐겨찾기