제출 #491743

#제출 시각아이디문제언어결과실행 시간메모리
491743hoanghq2004Zoo (COCI19_zoo)C++14
110 / 110
224 ms49732 KiB
#include <bits/stdc++.h> #pragma GCC target ("avx2") #pragma GCC optimization ("O3") #pragma GCC optimization ("unroll-loops") using namespace std; const int Nmax = 1010; int n, m; char c[Nmax][Nmax]; int par[Nmax * Nmax], sz[Nmax * Nmax], d[Nmax * Nmax]; int dx[4] = {0, 1, 0, -1}; int dy[4] = {1, 0, -1, 0}; vector <int> g[Nmax * Nmax]; int Find(int u) { return (u == par[u] ? u : par[u] = Find(par[u])); } void Union(int u, int v) { if ((u = Find(u)) == (v = Find(v))) return; if (sz[u] < sz[v]) swap(u, v); par[v] = u; sz[u] += sz[v]; } int main() { ios :: sync_with_stdio(0); cin.tie(0); cin >> n >> m; for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) cin >> c[i][j]; for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) par[i * m + j] = i * m + j, sz[i * m + j] = 1; for (int u = 0; u < n; ++u) for (int v = 0; v < m; ++v) { if (c[u][v] == '*') continue; for (int i = 0; i < 4; ++i) { int x = u + dx[i], y = v + dy[i]; if (x < 0 || x >= n || y < 0 || y >= m || c[x][y] == '*') continue; if (c[x][y] == c[u][v]) Union(x * m + y, u * m + v); } } for (int u = 0; u < n; ++u) for (int v = 0; v < m; ++v) { if (c[u][v] == '*') continue; for (int i = 0; i < 4; ++i) { int x = u + dx[i], y = v + dy[i]; if (x < 0 || x >= n || y < 0 || y >= m || c[x][y] == '*') continue; if (c[x][y] != c[u][v]) { g[Find(x * m + y)].push_back(Find(u * m + v)); g[Find(u * m + v)].push_back(Find(x * m + y)); } } } queue <int> q; q.push(Find(0)); for (int i = 0; i < n * m; ++i) d[i] = -1; d[Find(0)] = 1; while (q.size()) { int u = q.front(); q.pop(); for (auto v: g[u]) { if (d[v] != -1) continue; d[v] = d[u] + 1; q.push(v); } } cout << *max_element(d, d + n * m); }

컴파일 시 표준 에러 (stderr) 메시지

zoo.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    3 | #pragma GCC optimization ("O3")
      | 
zoo.cpp:4: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    4 | #pragma GCC optimization ("unroll-loops")
      |
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...