結果

問題 No.402 最も海から遠い場所
ユーザー TautConyTautCony
提出日時 2016-11-21 22:27:10
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 2,833 bytes
コンパイル時間 592 ms
コンパイル使用メモリ 73,580 KB
最終ジャッジ日時 2024-04-27 02:23:42
合計ジャッジ時間 1,366 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
main.cpp: In function 'int main()':
main.cpp:37:9: error: 'gets' was not declared in this scope; did you mean 'getw'?
   37 |         gets(line);
      |         ^~~~
      |         getw

ソースコード

diff #

#include <sstream>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <algorithm>
#include <queue>

template<typename T1, typename T2>inline std::ostream& operator << (std::ostream& os, const std::pair<T1, T2>& p) { return os << "(" << p.first << ", " << p.second << ")"; }
template<typename T>inline std::ostream &operator<<(std::ostream &os, const std::vector<T>& v) { bool first = true; os << "["; for (unsigned int i = 0; i < v.size(); i++) { if (!first)os << ", "; os << v[i]; first = false; }return os << "]"; }
inline std::ostream &operator<<(std::ostream &os, const std::vector<std::string>& v) { bool first = true; os << "["; for (unsigned int i = 0; i < v.size(); i++) { if (!first)os << ", "; os << "'" << v[i] << "'"; first = false; }return os << "]"; }
template<typename T, typename T2>void printarray(T  a[], T2 sz, T2 beg = 0) { for (T2 i = beg; i < sz; ++i) std::cout << a[i] << " "; std::cout << std::endl; }
template<typename T, typename T2>void printMatrix(T mat, T2 h, T2 w) { for(T2 i = 0; i < h; ++i) { bool first = true; for(int j = 0; j < w; ++j) { if (!first) std::cout << " "; std::cout << mat[i][j]; first = false; } std::cout << "\n"; } std::cout << "\n"; }

using namespace std;

const int dx8[] = { -1, 0, 1, 0 , -1 , -1 , 1 , 1 };
const int dy8[] = { 0, 1, 0, -1 , -1 , 1 , -1 , 1 };

#ifdef _MSC_VER
#define gets gets_s
#endif // _MSC_VER

int main()
{
    int H, W;
    scanf("%d %d", &H, &W);
    deque<pair<short, short> > que;
    char line[3002];
    short answer = 0;
    vector<vector<short> > cnt(H, vector<short>(W, 0));
    vector<vector<bool> > vis(H, vector<bool>(W, false));

    for (int i = 0; i < H; ++i)
    {
        gets(line);
        for (int j = 0; j < W; ++j)
        {
            if (line[j] == '.')
            {
                vis[i][j] = true;
                que.push_front({ i, j });
                continue;
            }
            cnt[i][j] = 1;
            if (i == 0 || i == H - 1 || j == 0 || j == W - 1)
            {
                vis[i][j] = true;
                que.push_back({ i, j });
            }
        }
    }

    while (!que.empty())
    {
        auto point = que.front();
        que.pop_front();
        auto _x = point.first, _y = point.second;
        for (int i = 0; i < 8; ++i)
        {
            auto x = _x  + dx8[i], y = _y + dy8[i];
            if (x < 0 || x >= H || y < 0 || y >= W || vis[x][y]) continue;
            short value = 0;
            if (!(_x < 0 || _x >= H || _y < 0 || _y >= W)) value = cnt[_x][_y];
            cnt[x][y] = value + 1;
            vis[x][y] = true;
            que.push_back({ x, y });
            answer = max(answer, cnt[x][y]);
        }
    }
    //printMatrix(cnt, H, W);
    printf("%d\n", max(1, static_cast<int>(answer)));
    return 0;
}
0