結果
問題 | No.157 2つの空洞 |
ユーザー | woodsgreen |
提出日時 | 2022-12-17 16:37:09 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,076 bytes |
コンパイル時間 | 2,245 ms |
コンパイル使用メモリ | 206,620 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-17 01:45:12 |
合計ジャッジ時間 | 3,156 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,816 KB |
testcase_01 | AC | 2 ms
6,820 KB |
testcase_02 | AC | 2 ms
6,816 KB |
testcase_03 | AC | 2 ms
6,816 KB |
testcase_04 | AC | 2 ms
6,816 KB |
testcase_05 | AC | 2 ms
6,816 KB |
testcase_06 | AC | 2 ms
6,820 KB |
testcase_07 | AC | 2 ms
6,816 KB |
testcase_08 | AC | 2 ms
6,820 KB |
testcase_09 | AC | 2 ms
6,816 KB |
testcase_10 | AC | 2 ms
6,816 KB |
testcase_11 | AC | 2 ms
6,820 KB |
testcase_12 | AC | 2 ms
6,820 KB |
testcase_13 | AC | 2 ms
6,816 KB |
testcase_14 | AC | 2 ms
6,816 KB |
testcase_15 | AC | 2 ms
6,816 KB |
testcase_16 | AC | 2 ms
6,820 KB |
testcase_17 | AC | 2 ms
6,816 KB |
testcase_18 | AC | 2 ms
6,816 KB |
testcase_19 | AC | 2 ms
6,816 KB |
ソースコード
#include <bits/stdc++.h> using namespace std; const int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1}; struct P{ int x,y; } q[410],s[410],t[410]; int w,h,cnts,cntt,vis[30][30]; char a[30][30]; void bfs(int x,int y){ memcpy(t,s,sizeof(s)); cntt=cnts, cnts=0; queue<P> q; q.push((P){x,y}); vis[x][y]=1; while(!q.empty()){ P p=q.front(); q.pop(); s[cnts++]=(P){p.x,p.y}; for(int i=0;i<4;++i){ int xx=p.x+dx[i],yy=p.y+dy[i]; if(!vis[xx][yy]&&a[xx][yy]=='.'){ vis[xx][yy]=1; q.push((P){xx,yy}); } } } } int main(){ cin>>h>>w; for(int i=1;i<=w;++i) for(int j=1;j<=h;++j) cin>>a[i][j]; for(int i=1;i<=w;++i) for(int j=1;j<=h;++j) if(!vis[i][j]&&a[i][j]=='.') bfs(i,j); int minn=100; for(int i=0;i<cnts;++i) for(int j=0;j<cntt;++j){ int d=abs(s[i].x-t[j].x)+abs(s[i].y-t[j].y); if(minn>d) minn=d; } cout<<minn-1; return 0; }