Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using ll = long long;
- using ii = pair<int, int>;
- const int maxN = 1e3 + 5;
- const int maxM = 1e4 + 5;
- const ll INF = 2e18 + 7;
- const int MOD = 998244353;
- int dx[4] = {0, 1, 0, -1};
- int dy[4] = {1, 0, -1, 0};
- int n, m;
- string s[maxM];
- int ans = 0;
- int h[maxN][maxN];
- bool visited[maxN][maxN], visit[maxN][maxN];
- void bfs(int x, int y) {
- memset(visit, false, sizeof(visit));
- visit[x][y] = true;
- memset(h, 0, sizeof(h));
- queue<ii> q;
- q.push(make_pair(x, y));
- while (!q.empty()) {
- int ux = q.front().first;
- int uy = q.front().second;
- q.pop();
- for (int i = 0; i < 4; i++) {
- int u = ux + dx[i];
- int v = uy + dy[i];
- if (u <= 0 || u > n) continue;
- if (v <= 0 || v > m) continue;
- if (visit[u][v]) continue;
- if (s[u][v] == '.') {
- visit[u][v] = true;
- q.push(make_pair(u, v));
- h[u][v] = h[ux][uy] + 1;
- ans = max(ans, h[u][v]);
- }
- }
- }
- }
- int main() {
- #ifdef LOCAL
- freopen("in4.txt", "r", stdin);
- #else
- freopen("THMECUNG.inp", "r", stdin);
- freopen("THMECUNG.out", "w", stdout);
- #endif
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- cin >> n >> m;
- for (int i = 1; i <= n; i++) {
- cin >> s[i];
- s[i] = ' ' + s[i];
- }
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= m; j++)
- if (s[i][j] == '.' && !visited[i][j]) {
- visited[i][j] = true;
- bfs(i, j);
- }
- cout << ans << '\n';
- return 0;
- }
Add Comment
Please, Sign In to add comment