제출 #57261

#제출 시각아이디문제언어결과실행 시간메모리
57261fredbr무지개나라 (APIO17_rainbow)C++17
0 / 100
3104 ms44036 KiB
#include <bits/stdc++.h> #include "rainbow.h" using namespace std; const int maxn = 110; const int maxm = 202020; int r, c; char riv[maxn][maxm]; char vis[maxn][maxm]; void init(int rr, int cc, int sr, int sc, int m, char* s) { r = rr, c = cc; int x = sr, y = sc; riv[x][y] = 1; for (int i = 0; i < m; i++) { if (s[i] == 'N') x--; else if (s[i] == 'E') y++; else if (s[i] == 'S') x++; else y--; riv[x][y] = 1; } // for (int i = 1; i <= rr; i++) { // for (int j = 1; j <= cc; j++) // cout << int(riv[i][j]); // cout << "\n"; // } } int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; void dfs(int x, int y, int x1, int y1, int x2, int y2) { vis[x][y] = 1; for (int i = 0; i < 4; i++) { int xx = x+dx[i]; int yy = y+dy[i]; if (xx < x1 or xx > x2 or yy < y1 or yy > y2) continue; if (riv[xx][yy] or vis[xx][yy]) continue; dfs(xx, yy, x1, y1, x2, y2); } } int colour(int x1, int y1, int x2, int y2) { int ans = 0; memset(vis, 0, sizeof(vis)); for (int i = x1; i <= x2; i++) for (int j = y1; j <= y2; j++) if (!riv[i][j] and !vis[i][j]) dfs(i, j, x1, y1, x2, y2), ans++; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...