結果
| 問題 |
No.157 2つの空洞
|
| コンテスト | |
| ユーザー |
zaki_joho
|
| 提出日時 | 2018-12-24 14:27:28 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,967 bytes |
| コンパイル時間 | 1,395 ms |
| コンパイル使用メモリ | 171,292 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-25 10:59:55 |
| 合計ジャッジ時間 | 2,119 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 16 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:38:15: warning: ‘sy’ may be used uninitialized in this function [-Wmaybe-uninitialized]
38 | dis[sx][sy] = 0;
| ^
main.cpp:38:11: warning: ‘sx’ may be used uninitialized in this function [-Wmaybe-uninitialized]
38 | dis[sx][sy] = 0;
| ^
ソースコード
#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using ld = long double;
using P = pair<int, int>;
constexpr ld EPS = 1e-12;
constexpr int INF = numeric_limits<int>::max() / 2;
constexpr int MOD = 1e9 + 7;
int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
int main()
{
cin.tie(0);
ios::sync_with_stdio(false);
int W, H;
cin >> W >> H;
vector<string> s(H);
int sx, sy;
for (int i = 0; i < H; i++)
{
cin >> s[i];
for (int j = 0; j < W; j++)
{
if (s[i][j] == '.')
{
sx = i;
sy = j;
}
}
}
vector<vector<int>> dis(H, vector<int>(W, INF));
queue<P> q;
q.push(P(sx, sy));
dis[sx][sy] = 0;
while (!q.empty())
{
P p = q.front();
q.pop();
int x = p.first, y = p.second;
s[x][y] = '#';
for (int i = 0; i < 4; i++)
{
int nx = x + dx[i], ny = y + dy[i];
if (nx < 0 || H <= nx || ny < 0 || W <= ny)
continue;
if (dis[nx][ny] != INF)
continue;
if (s[nx][ny] != '.')
continue;
dis[nx][ny] = 0;
q.push(P(nx, ny));
}
}
for (int i = 0; i < H; i++)
for (int j = 0; j < W; j++)
if (dis[i][j] == 0)
q.push(P(i, j));
while (!q.empty())
{
P p = q.front();
q.pop();
int x = p.first, y = p.second;
for (int i = 0; i < 4; i++)
{
int nx = x + dx[i], ny = y + dy[i];
if (nx < 0 || H <= nx || ny < 0 || W <= ny)
continue;
if (dis[nx][ny] != INF)
continue;
if (s[nx][ny] == '.')
{
cout << dis[x][y] << endl;
return 0;
}
dis[nx][ny] = dis[x][y] + 1;
q.push(P(nx, ny));
}
}
}
zaki_joho