Algorithm


Problem Name: 2 AD-HOC - beecrowd | 2405

Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2405

Colorindo

 

Por OBI - Olimpíada Brasileira de Informática 2011 BR Brazil

Timelimit: 1

A Sociedade Brasileira das Cores (SBC) é uma editora de livros de colorir. As crianças adoram os livros da SBC porque suas figuras, depois de pintadas, ficam muito coloridas e bonitas. Isso acontece porque a SBC se preocupa em não deixar grandes regiões contínuas em suas figuras, que devem ser pintadas com uma cor só.

Até agora, o processo de verificar se uma figura tinha uma região contínua grande era completamente visual, mas a SBC resolveu automatizar esse processo e você foi contratado para programar uma parte desse sistema.

Uma figura é representada por uma grade, de dimensão N por M. Cada quadrado dessa grade é representado por uma coordenada (ij), com 1 ≤ i ≤ N e 1 ≤ j ≤ M. Por exemplo, a coordenada (1, 5) representa o quadrado na primeira linha e quinta coluna, enquanto que a coordenada (3, 7) representa o quadrado na terceira linha e sétima coluna. As linhas são contadas de baixo para cima e as colunas da esquerda para a direita.

Cada quadrado pode estar vazio ou cheio. Assumimos que uma criança só vai pintar sobre quadrados vazios e se ela pintar um quadrado de uma cor, ela irá pintar os oito vizinhos da mesma cor, desde que eles estejam vazios e que ela não saia da área da figura.

No segundo exemplo de caso de teste abaixo, temos uma figura de dimensões 5 × 5. A criança começa a pintar na posição (3, 3). Na figura abaixo ilustramos este caso. A posição que a criança inicia está marcada com a letra "X", e os quadrados que a criança consegue pintar estão destacandos em cinza claro. Note que ela consegue pintar o quadrado (4, 4), pois este quadrado é um dos quadrados que ela consegue pintar após ter pintado o quadrado (3, 3).

No terceiro exemplo de caso de teste abaixo, temos uma figura de dimensões 10 × 10. A criança começa a pintar na posição (5, 5). Na figura abaixo ilustramos este caso. A posição que a criança inicia está marcada com a letra "X", e os quadrados que a criança consegue pintar estão destacandos em cinza claro.

Dada a figura e a coordenada onde uma criança vai começar a pintar, sua tarefa é descobrir quantos quadrados ela irá pintar.

 

Entrada

 

A primeira linha da entrada contém 5 números inteiros, NMXY e K (1 ≤ NM ≤ 200), (1 ≤ K ≤ 10 000). Os números inteiros N e M são respectivamente o número de linhas e colunas da grade, enquanto que (XY) é a coordenada onde a criança vai começar a pintar e K é o número de quadrados cheios na figura.

Seguem-se K linhas, cada uma com dois inteiros A e B (1 ≤ XA ≤ N), (1 ≤ YB ≤ M) que são as coordenadas de um quadrado cheio.

Garantimos que o quadrado na posição (XY) está sempre vazio.

 

Saída

 

Seu programa deve imprimir uma linha contendo o número de quadrados pintados pela criança.

 

 

 

Exemplos de Entrada Exemplos de Saída

1 5 1 2 2

1 1

1 4

2

 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming


#include <cstdio>
#include <vector>
#define MAXN 210
using namespace std;
int matriz[MAXN][MAXN], n, m, x, y, k, resposta;
void dfs(int a, int b) {
    if (a  < = 0 || b <= 0 || a > n || b > m) return;
    if (matriz[a][b] == 0) {
        matriz[a][b] = 1;
        dfs(a + 1, b);
        dfs(a - 1, b);
        dfs(a, b + 1);
        dfs(a, b - 1);
        dfs(a + 1, b + 1);
        dfs(a + 1, b - 1);
        dfs(a - 1, b + 1);
        dfs(a - 1, b - 1);
    }
}
int main() {
    scanf("%d %d %d %d %d", &n, &m, &x, &y, &k);
    for (int i = 0; i  <  k; i++) {
        int w, z;
        scanf("%d %d", &w, &z);
        matriz[w][z] = -1;
    }
    dfs(x, y);
    for (int i = 1; i  < = n; i++) {
        for (int j = 1; j  < = m; j++) {
            if (matriz[i][j] == 1) resposta++;
        }
    }
    printf("%d\n", resposta);
    return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
1 5 1 2 2
1 1
1 4
Advertisements

Demonstration


Previous
#2403 Beecrowd Online Judge Solution 2403 Escalonamento Ótimo Solution in C, C++, Java, Js and Python
Next
#2406 Beecrowd Online Judge Solution 2406 Expressões Solution in C, C++, Java, Js and Python