답안 #639323

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
639323 2022-09-09T12:09:00 Z NotLinux Dijamant (COCI22_dijamant) C++14
0 / 70
1000 ms 340 KB
/**
 * author: NotLinux
 * created: 09.09.2022 ~ 14:09:50
**/
#include <bits/stdc++.h>
using namespace std;
#define int long long
#ifdef LOCAL
    #include "/home/notlinux/debug.h"
#else
    #define debug(x...) void(37)
#endif
int n,m;
vector < string > grid;
vector < vector < int > > vis1;
int cnt = 1e12;
int  func(int x , int y){
    set < int > ret;
    vis1.assign(n , vector < int > (m , 0LL));
    queue < pair < int , pair < int , int > > > bfs;
    bfs.push({0,{x,y}});
    while(bfs.size()){
        int x = bfs.front().second.first;
        int y = bfs.front().second.second;
        int w = bfs.front().first;
        bfs.pop();
        if(x<0 or x>=n or y<0 or y>=m){
            ret.insert(cnt);
            cnt++;
            continue;
        }
        if(vis1[x][y])continue;
        vis1[x][y] = 1;
        if(grid[x][y]=='#'){
            ret.insert(w);
            continue;
        }
        bfs.push({w+1,{x+1,y}});
        bfs.push({w+1,{x-1,y}});
        bfs.push({w+1,{x,y+1}});
        bfs.push({w+1,{x,y-1}});
    }
    return ((int)ret.size());
}   
void solve(){
     cin >> n >> m;
     grid.resize(n);
     for(auto &inp : grid)cin >> inp;
     int ans = 0;
     for(int i = 0;i<n;i++)for(int j = 0;j<m;j++){
        if(grid[i][j]=='#')continue;
        int  cnt = func(i,j);
        ans += (cnt == 1);
    }
     cout << ans << endl;
}
int32_t main(){
    ios_base::sync_with_stdio(0);cin.tie(nullptr);
    int tt=1;
    //cin >> tt;
    while(tt--)solve();
}
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1086 ms 340 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1086 ms 340 KB Time limit exceeded
2 Halted 0 ms 0 KB -