結果
問題 | No.157 2つの空洞 |
ユーザー | dnish |
提出日時 | 2017-05-04 12:31:01 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,041 bytes |
コンパイル時間 | 1,788 ms |
コンパイル使用メモリ | 175,188 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-14 07:02:56 |
合計ジャッジ時間 | 2,670 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,816 KB |
testcase_01 | AC | 2 ms
6,944 KB |
testcase_02 | AC | 2 ms
6,940 KB |
testcase_03 | AC | 2 ms
6,940 KB |
testcase_04 | AC | 2 ms
6,944 KB |
testcase_05 | AC | 2 ms
6,940 KB |
testcase_06 | AC | 2 ms
6,940 KB |
testcase_07 | AC | 2 ms
6,944 KB |
testcase_08 | AC | 3 ms
6,940 KB |
testcase_09 | AC | 2 ms
6,940 KB |
testcase_10 | AC | 2 ms
6,940 KB |
testcase_11 | AC | 2 ms
6,944 KB |
testcase_12 | AC | 2 ms
6,940 KB |
testcase_13 | AC | 2 ms
6,940 KB |
testcase_14 | AC | 2 ms
6,944 KB |
testcase_15 | AC | 2 ms
6,940 KB |
testcase_16 | AC | 2 ms
6,940 KB |
testcase_17 | AC | 2 ms
6,944 KB |
testcase_18 | AC | 2 ms
6,944 KB |
testcase_19 | AC | 2 ms
6,940 KB |
ソースコード
#include <bits/stdc++.h> #define REP(i,n,N) for(int i=(n);i<(int)N;i++) #define p(s) cout<<(s)<<endl #define ck(n,a,b) ((a)<=(n)&&(n)<(b)) #define F first #define S second using namespace std; const int inf=1e9; int dx[]={1,0,-1,0}; int dy[]={0,1,0,-1}; bool visit[20][20]; int main(){ int w,h; cin>>w>>h; string field[21]; REP(i,0,h) cin>>field[i]; stack<pair<int,int>> st; vector<pair<int,int>> vt[2]; int v=0; REP(i,1,h-1){ REP(j,1,w-1){ if(field[i][j]=='.'&&!visit[i][j]){ st.push({i,j}); vt[v].push_back({i,j}); visit[i][j]=true; while(!st.empty()){ pair<int,int> now=st.top();st.pop(); REP(i,0,4){ int ny=now.F+dy[i],nx=now.S+dx[i]; if(field[ny][nx]=='#') continue; if(visit[ny][nx]) continue; visit[ny][nx]=true; vt[v].push_back({ny,nx}); st.push({ny,nx}); } } v++; } } if(v==2) break; } int ans=inf; for(auto a : vt[0]){ for(auto b :vt[1]){ int x= abs(b.F-a.F),y=abs(b.S-a.S); ans=min(ans,x+y-1); } } p(ans); return 0; }