本地和luogu输出不同
查看原帖
本地和luogu输出不同
1069491
hutao_262218926楼主2024/4/13 10:23
#include<bits/stdc++.h>
using namespace std;
int n,m[505],vis[505][505],tot=0;
const int dx[4]={0,-1,0,1};
const int dy[4]={-1,0,1,0};
string s[505];
void dfs(int x,int y){
    for(int i=0;i<4;i++){
        int tx=x+dx[i];
        int ty=y+dy[i];
        if(tx>=1&&tx<=n&&ty>=1&&ty<=m[tx]){
            if(s[tx][ty]=='*'||s[tx][ty]==' ')continue;
            if(vis[tx][ty]==0){
                vis[tx][ty]=tot;
                dfs(tx,ty);
            }
        }
    }
}
int main(){
    cin>>n;
    getline(cin,s[0]);
    for(int i=1;i<=n;i++){
        getline(cin,s[i]);
        m[i]=s[i].size();
        s[i]='!'+s[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m[i];j++){
            if(s[i][j]!='*'&&s[i][j]!=' '&&vis[i][j]==0){
                vis[i][j]=++tot;
                dfs(i,j);
            }
        }
    }
    cout<<tot;
    return 0;
}

样例四: 本地16, luogu18

2024/4/13 10:23
加载中...