Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using pii = pair<int, int>;
- int n;
- int ar[20][20];
- bool visited[20][20];
- int dx[] = {1, -1, 0, 0};
- int dy[] = {0, 0, 1, -1};
- bool position(int i,int j){
- return i >= 1 and i <= n and j >= 1 and j <= n;
- }
- void fill_visited(int ui, int uj){
- queue <pii> q;
- q.push({ui,uj});
- while(q.size()>0){
- ui = q.front().first;
- uj = q.front().second;
- q.pop();
- if(!visited[ui][uj])
- continue;
- visited[ui][uj] = false;
- for(int d=0;d<4;d++){
- int vi = ui+dx[d];
- int vj = uj+dy[d];
- if(position(vi,vj) and ar[vi][vj] == ar[ui][uj] and visited[vi][vj])
- q.push({vi,vj});
- }
- }
- }
- int count_num(int i, int j, int cmp){
- int cnt = 0;
- queue <pii> q;
- q.push({i,j});
- while(q.size()>0){
- int ui,uj;
- ui = q.front().first;
- uj = q.front().second;
- q.pop();
- if(visited[ui][uj])
- continue;
- visited[ui][uj] = true;
- cnt ++;
- for(int d=0;d<4;d++){
- int vi,vj;
- vi = ui+dx[d];
- vj = uj+dy[d];
- if(position(vi,vj) and ar[vi][vj] == cmp and !visited[vi][vj]){
- q.push({vi,vj});
- }
- }
- }
- if(cnt == 3) fill_visited(i,j);
- return cnt;
- }
- int around(int ui,int uj){
- int u = ui-1;
- int d = ui+1;
- int l = uj-1;
- int r = uj+1;
- if(position(u, l) and ar[ui][uj] == ar[u][uj] and ar[ui][uj] == ar[ui][l]) return true;
- if(position(u, r) and ar[ui][uj] == ar[u][uj] and ar[ui][uj] == ar[ui][r]) return true;
- if(position(d, r) and ar[ui][uj] == ar[d][uj] and ar[ui][uj] == ar[ui][r] ) return true;
- if(position(d, l) and ar[ui][uj] == ar[d][uj] and ar[ui][uj] == ar[ui][l] ) return true;
- return false;
- }
- int main(){
- scanf("%d", &n);
- int ans = 0;
- for(int i=1;i<=n;i++){
- for(int j=1;j<=n;j++){
- scanf("%d", &ar[i][j]);
- }
- }
- for(int i=1;i<=n;i++){
- for(int j=1;j<=n;j++){
- if(ar[i][j] == 0) continue;
- if(count_num(i, j, ar[i][j]) == 3 and around(i, j))
- ans++;
- }
- }
- printf("%d", ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement