#include "osalib.h" #include <bits/stdc++.h> using namespace std; const int N = 1005; int n, m; char z[N][N]; bool vis[N][N]; void NowaWyspa(int nn, int mm, char** board) { n = nn; m = mm; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) z[i][j] = board[i][j]; } inline bool ins(int i, int j) { return i >= 0 && i < n && j >= 0 && j < m; } const int dx[] = {1, -1, 0, 0}; const int dy[] = {0, 0, 1, -1}; void dfs(int i, int j) { vis[i][j] = 1; for (int r = 0; r < 4; r++) if (ins(i+dx[r], j+dy[r])) if (z[i+dx[r]][j+dy[r]] != 'W' && !vis[i+dx[r]][j+dy[r]]) dfs(i+dx[r], j+dy[r]); } int NowaWarownia(int r, int c) { r--; c--; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) vis[i][j] = 0; vis[r][c] = 1; int run = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (z[i][j] == 'K') { if (run==1 && !vis[i][j]) return 0; if (!run) { run = 1; dfs(i, j); } } z[r][c] = 'W'; return 1; } void PrzeniesOsade(int r1, int c1, int r2, int c2) { r1--; r2--; c1--; c2--; z[r2][c2] = 'K'; z[r1][c1] = '.'; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include "osalib.h" #include <bits/stdc++.h> using namespace std; const int N = 1005; int n, m; char z[N][N]; bool vis[N][N]; void NowaWyspa(int nn, int mm, char** board) { n = nn; m = mm; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) z[i][j] = board[i][j]; } inline bool ins(int i, int j) { return i >= 0 && i < n && j >= 0 && j < m; } const int dx[] = {1, -1, 0, 0}; const int dy[] = {0, 0, 1, -1}; void dfs(int i, int j) { vis[i][j] = 1; for (int r = 0; r < 4; r++) if (ins(i+dx[r], j+dy[r])) if (z[i+dx[r]][j+dy[r]] != 'W' && !vis[i+dx[r]][j+dy[r]]) dfs(i+dx[r], j+dy[r]); } int NowaWarownia(int r, int c) { r--; c--; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) vis[i][j] = 0; vis[r][c] = 1; int run = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (z[i][j] == 'K') { if (run==1 && !vis[i][j]) return 0; if (!run) { run = 1; dfs(i, j); } } z[r][c] = 'W'; return 1; } void PrzeniesOsade(int r1, int c1, int r2, int c2) { r1--; r2--; c1--; c2--; z[r2][c2] = 'K'; z[r1][c1] = '.'; } |