제출 #1293781

#제출 시각아이디문제언어결과실행 시간메모리
1293781fairkrashDango Maker (JOI18_dango_maker)C++20
13 / 100
1 ms576 KiB
#include <bits/stdc++.h> #include <random> using namespace std; using ll = int; using ld = long double; ll INF = 1e9; const ll MX = 3001; vector<vector<pair<ll, ll>>> g; vector<ll> p_g; vector<ll> p_w; vector<ll> used; ll tt = 1; bool kun(ll v) { if (used[v] == tt) { return false; } used[v] = tt; for (ll i = 0; i < g[v].size(); i++) { if (p_g[g[v][i].first] == -1 && p_w[g[v][i].second] == -1) { p_g[g[v][i].first] = v; p_w[g[v][i].second] = v; return true; } } for (ll i = 0; i < g[v].size(); i++) { if (p_g[g[v][i].first] != -1) { if (kun(p_g[g[v][i].first])) { if (p_w[g[v][i].second] != -1) { tt++; used[v] = tt; if (kun(p_w[g[v][i].second])) { p_g[g[v][i].first] = v; p_w[g[v][i].second] = v; return true; } else { p_g[g[v][i].first] = -1; } } else { p_g[g[v][i].first] = v; p_w[g[v][i].second] = v; return true; } } } } return false; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); ll n, m; cin >> n >> m; ll v1 = 0, v2 = 0, v3 = 0; vector<string> s(n); vector<vector<ll>> color(n, vector<ll>(m)); for (ll i = 0; i < n; i++) { cin >> s[i]; } for (ll i = 0; i < n; i++) { for (ll j = 0; j < m; j++) { if (s[i][j] == 'R') { color[i][j] = v1; v1++; } if (s[i][j] == 'G') { color[i][j] = v2; v2++; } if (s[i][j] == 'W') { color[i][j] = v3; v3++; } } } used.assign(v1 + 1, {}); g.assign(v1 + 1, {}); p_g.assign(v2 + 1, -1); p_w.assign(v3 + 1, -1); for (ll i = 0; i < n; i++) { for (ll j = 0; j < m; j++) { if (s[i][j] == 'R') { if (j + 2 < m) { if (s[i][j + 1] == 'G' && s[i][j + 2] == 'W') { g[color[i][j]].emplace_back(color[i][j + 1], color[i][j + 2]); } } if (i + 2 < n) { if (s[i + 1][j] == 'G' && s[i + 2][j] == 'W') { g[color[i][j]].emplace_back(color[i + 1][j], color[i + 2][j]); } } } } } ll ans = 0; for (ll i = 0; i < g.size(); i++) { tt++; if (kun(i)) { ans++; } } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...