feat: new graph problems formatted.

This commit is contained in:
2026-08-24 14:47:58 -03:00
parent 5316029272
commit f89d4158cd
443 changed files with 2218170 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
Está chovendo tanto na Obilândia que algumas goteiras apareceram dentro da casa
do prefeito. Uma delas faz a água escorrer verticalmente a partir de um ponto no
teto, em uma parede que possui várias prateleiras horizontais.
A parede é representada por uma matriz de $N$ linhas e $M$ colunas. O caractere
\texttt{.} representa parede seca, o caractere \texttt{\#} representa parte de
uma prateleira, e o caractere \texttt{o} representa o ponto inicial do vazamento.
Quando a água passa por uma posição livre, ela continua escorrendo para baixo. Se
a água encontra uma prateleira logo abaixo, ela também passa a escorrer
horizontalmente para a esquerda e para a direita sobre essa prateleira, até poder
voltar a escorrer para baixo.
Sua tarefa é determinar todas as posições da parede que ficarão molhadas pela
água.

10
chuva/statement/input.tex Normal file
View File

@@ -0,0 +1,10 @@
A primeira linha contém dois inteiros $N$ e $M$ ($3 \le N, M \le 500$),
respectivamente o número de linhas e de colunas da matriz.
As próximas $N$ linhas contêm, cada uma, uma sequência de $M$ caracteres entre
\texttt{.}, \texttt{\#} e \texttt{o}, representando a parede no início do
vazamento.
É garantido que $N$ é ímpar, existe exatamente um caractere \texttt{o} na
primeira linha, e não há prateleiras nas linhas ímpares, na primeira coluna nem
na última coluna.

13
chuva/statement/notes.tex Normal file
View File

@@ -0,0 +1,13 @@
No primeiro exemplo, a água começa no topo, desce até encontrar a primeira
prateleira e passa a escorrer para os lados. Ao chegar nas extremidades de uma
prateleira, ela volta a descer e pode repetir o mesmo processo em prateleiras
mais abaixo.
No segundo exemplo, a primeira prateleira desvia a água para a esquerda e para a
direita, criando dois caminhos verticais que continuam pela parede.
No terceiro exemplo, a prateleira logo abaixo da água permite que ela avance para
a direita antes de continuar descendo.
Problema adaptado da OBI 2019, Fase 1:
\href{https://olimpiada.ic.unicamp.br/pratique/pu/2019/f1/chuva/}{Chuva}.

View File

@@ -0,0 +1,3 @@
Imprima $N$ linhas, cada uma contendo uma sequência de $M$ caracteres,
representando a matriz da entrada depois que todas as posições molhadas forem
marcadas com o caractere \texttt{o}.

View File

View File

@@ -0,0 +1,20 @@
Podemos simular diretamente o espalhamento da água. Cada posição molhada gera
novas posições molhadas segundo as regras do enunciado:
\begin{itemize}
\item se a célula imediatamente abaixo está dentro da matriz e é
\texttt{.}, ela também fica molhada;
\item se existe uma prateleira imediatamente abaixo da posição atual, a água
pode se espalhar para a esquerda e para a direita na mesma linha.
\end{itemize}
Para evitar processar a mesma posição várias vezes, sempre que uma célula
\texttt{.} fica molhada, trocamos seu caractere para \texttt{o} e a colocamos em
uma fila. Enquanto a fila não estiver vazia, removemos uma posição e tentamos
aplicar os movimentos descritos acima.
As prateleiras nunca viram água, portanto células com \texttt{\#} são apenas
obstáculos que podem sustentar o espalhamento lateral.
Como cada célula da matriz é inserida na fila no máximo uma vez, a complexidade
de tempo é $O(N \cdot M)$. A matriz e a fila também usam $O(N \cdot M)$ de
espaço.