feat: new graph problem formatted.
This commit is contained in:
12
gatinhos/statement/description.tex
Normal file
12
gatinhos/statement/description.tex
Normal file
@@ -0,0 +1,12 @@
|
||||
Bibi está visitando um grande abrigo de animais que tem o formato de uma árvore.
|
||||
O abrigo possui $n$ salas conectadas por $n-1$ corredores, e a entrada principal fica na sala $1$.
|
||||
Como é uma árvore, existe exatamente um caminho simples entre quaisquer duas salas.
|
||||
|
||||
Em algumas salas, há lindos gatinhos brincando. Bibi ama gatinhos, mas infelizmente ela tem uma leve alergia a eles.
|
||||
Ela sabe que, se passar por \textbf{mais de} $m$ salas consecutivas contendo gatinhos ao longo de seu caminho, sua alergia vai atacar e ela começará a espirrar sem parar!
|
||||
|
||||
As saídas do abrigo estão localizadas nas salas que são "folhas" dessa árvore.
|
||||
Uma sala é considerada uma folha se ela tem apenas um corredor conectado a ela e não é a sala da entrada principal.
|
||||
|
||||
Bibi sempre caminha se afastando da entrada principal.
|
||||
Ela quer saber: quantas saídas diferentes do abrigo ela consegue alcançar a partir da entrada sem que sua alergia ataque em nenhum momento do caminho?
|
||||
5
gatinhos/statement/input.tex
Normal file
5
gatinhos/statement/input.tex
Normal file
@@ -0,0 +1,5 @@
|
||||
A primeira linha da entrada contém dois inteiros $n$ e $m$ ($2 \le n \le 10^5, 1 \le m \le n$), indicando o número de salas no abrigo e o número máximo tolerado de salas consecutivas com gatinhos.
|
||||
|
||||
A segunda linha contém $n$ inteiros $a_1, a_2, \ldots, a_n$ ($a_i \in \{0, 1\}$). Se $a_i = 1$, a sala $i$ tem gatinhos. Se $a_i = 0$, a sala $i$ não tem gatinhos.
|
||||
|
||||
As próximas $n-1$ linhas descrevem os corredores do abrigo. Cada linha contém dois inteiros $u$ e $v$ ($1 \le u, v \le n, u \neq v$), indicando um corredor entre as salas $u$ e $v$. É garantido que os corredores formam uma árvore válida enraizada em $1$.
|
||||
21
gatinhos/statement/notes.tex
Normal file
21
gatinhos/statement/notes.tex
Normal file
@@ -0,0 +1,21 @@
|
||||
Vamos lembrar que uma árvore é um grafo conexo com $n$ vértices (salas) e $n-1$ arestas (corredores). Uma árvore enraizada é uma árvore com um vértice especial chamado raiz (neste problema, a sala 1). Em uma árvore enraizada, entre quaisquer dois vértices conectados por uma aresta, um vértice é o pai (o que está mais próximo da raiz), e o outro é o filho. Um vértice é chamado de folha se não tiver filhos.
|
||||
|
||||
\vspace{0.5cm}
|
||||
|
||||
\textbf{Nota para o primeiro caso de teste:} As salas contendo gatinhos estão marcadas em vermelho. As saídas (folhas) estão localizadas nas salas 2, 3 e 4. Bibi só não consegue ir para a saída localizada na sala 2.
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\includegraphics[width=0.25\textwidth]{sample-01.png}
|
||||
\end{figure}
|
||||
|
||||
\vspace{0.5cm}
|
||||
|
||||
\textbf{Nota para o segundo caso de teste:} As saídas (folhas) estão localizadas nas salas 4, 5, 6 e 7. Bibi não consegue ir para as saídas 6 e 7.
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\includegraphics[width=0.4\textwidth]{sample-02.png}
|
||||
\end{figure}
|
||||
|
||||
Problema adaptado de \href{https://codeforces.com/contest/580/problem/C}{Codeforces Round 321 (Div. 2, Problem C)}.
|
||||
1
gatinhos/statement/output.tex
Normal file
1
gatinhos/statement/output.tex
Normal file
@@ -0,0 +1 @@
|
||||
Imprima um único inteiro: o número de saídas do abrigo que Bibi consegue alcançar sem passar por mais de $m$ salas com gatinhos consecutivas.
|
||||
0
gatinhos/statement/preamble.tex
Normal file
0
gatinhos/statement/preamble.tex
Normal file
14
gatinhos/statement/tutorial.tex
Normal file
14
gatinhos/statement/tutorial.tex
Normal file
@@ -0,0 +1,14 @@
|
||||
O problema pode ser modelado como uma travessia em árvore (por exemplo, usando Busca em Profundidade - DFS ou Busca em Largura - BFS).
|
||||
Começando da raiz (sala 1), mantemos um contador do número de gatinhos consecutivos que vimos até o momento no caminho da raiz até o nó atual.
|
||||
Ao visitar um nó $u$:
|
||||
\begin{itemize}
|
||||
\item Se o nó atual possui um gatinho ($a_u = 1$), incrementamos o nosso contador.
|
||||
\item Caso contrário ($a_u = 0$), zeramos o contador.
|
||||
\end{itemize}
|
||||
|
||||
Se em qualquer ponto o contador ultrapassar o limite $m$, sabemos que este caminho não é mais válido, portanto, paramos a travessia a partir desse nó (pois a alergia atacou e Bibi não pode continuar).
|
||||
|
||||
Se chegarmos a um nó que é folha e o contador não tiver excedido $m$, incrementamos nossa resposta em 1.
|
||||
|
||||
A complexidade de tempo será $O(n)$ pois visitamos cada nó no máximo uma vez e realizamos operações de tempo constante em cada passo.
|
||||
A complexidade de espaço será $O(n)$ devido ao armazenamento da árvore e à pilha de chamadas da recursão ou à fila da BFS.
|
||||
Reference in New Issue
Block a user