样例全过,提交全错,tell me , why!
查看原帖
样例全过,提交全错,tell me , why!
1294034
wow123abc楼主2025/8/3 11:53
#include<iostream>
#include<vector>
using namespace std;
const int dx[] = {0,1,0,-1};
const int dy[] = {1,0,-1,0};
int n,m;
char graph[510][510];
bool vis[510][510];
void dfs(int x,int y){
        for(int i = 0; i < 4; i ++){
                int xx = x + dx[i];
                int yy = y + dy[i];
                if(xx >= 1 && xx <= n && yy >= 1 && yy <= m && !vis[xx][yy]){
                        vis[xx][yy] = 1;
                        dfs(xx,yy);
                }
        }
}
int main(){
        cin >> n >> m;
        for(int i = 1; i <= n; i ++){
                for(int j = 1; j <= m; j ++){
                        cin >> graph[i][j];
                        if(graph[i][j] == '*') vis[i][j] = true;
                }
        }
        for(int i = 1; i <= n; i ++){
                if(!vis[i][1]) dfs(i,1);
                if(!vis[i][n]) dfs(i,n);
        }
        for(int j = 1; j <= m; j ++){
                if(!vis[j][1]) dfs(j,1);
                if(!vis[j][m]) dfs(j,m);
        }
        int ans = 0;
        for(int i = 1; i <= n; i ++){
                for(int j = 1; j <= m; j ++){
                        if(!vis[i][j]) ans ++;
                }
        }
        cout << ans << endl;
        return 0;
}
2025/8/3 11:53
加载中...