\documentclass[10pt]{article} \usepackage[utf8]{inputenc} \usepackage{amsmath,amsthm,amssymb} \usepackage{fullpage} \usepackage{url} \pagenumbering{gobble} \usepackage{hyperref} \title{ Tutorial: Gatinhos} \author{Arthur Andrade D'Olival} \date{} \begin{document} \maketitle 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. \end{document}