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,17 @@
As cidades da Cosmolândia usam sistemas de metrô com uma organização muito
regular. Existe uma estação central, várias linhas radiais saindo dela, e uma
linha circular que passa ao redor da estação central.
Cada linha radial começa na estação central, segue sem cruzar as outras linhas
radiais e encontra a linha circular em alguma estação. Depois desse encontro,
ela ainda pode continuar até regiões mais afastadas da cidade.
O sistema possui $N$ estações, numeradas de $1$ a $N$. Esses números não indicam
a posição das estações. Você recebe apenas a lista de ligações diretas entre
pares de estações e deve determinar por quantas estações passa a linha circular.
\begin{figure}[h]
\centering
\includegraphics[width=0.7\textwidth]{image.png}
\caption{Exemplo de um sistema de metrô da Cosmolândia.}
\end{figure}

12
metro/statement/input.tex Normal file
View File

@@ -0,0 +1,12 @@
A primeira linha contém dois inteiros $N$ e $M$ ($6 \le N \le 20000$,
$0 \le M \le 20100$), indicando respectivamente o número de estações e o número
de ligações diretas entre pares de estações.
Cada uma das próximas $M$ linhas contém dois inteiros $P$ e $Q$
($1 \le P, Q \le N$, $P \ne Q$), indicando que existe uma ligação direta entre
as estações $P$ e $Q$.
É garantido que o sistema descrito segue o padrão de metrô da Cosmolândia:
existe uma única estação central, dela saem pelo menos $5$ e no máximo $100$
linhas radiais, e há no máximo uma ligação direta entre qualquer par de
estações.

View File

@@ -0,0 +1,9 @@
No primeiro exemplo, a estação central é a estação $3$. Ao remover essa estação
e as partes radiais que não pertencem ao círculo, sobram as estações
$1, 6, 2, 5$ e $4$, portanto a linha circular passa por $5$ estações.
No segundo exemplo, aplicar o mesmo processo deixa $8$ estações na linha
circular.
Problema adaptado da OBI 2015, Fase 1:
\href{https://olimpiada.ic.unicamp.br/pratique/ps/2015/f1/metro/}{Metrô}.

View File

@@ -0,0 +1,2 @@
Imprima um único inteiro: o número de estações pelas quais passa a linha
circular do sistema de metrô.

View File

View File

@@ -0,0 +1,26 @@
O grafo do sistema tem uma propriedade importante: a estação central é a única
estação com grau pelo menos $5$, pois dela saem todas as linhas radiais. As
outras estações pertencem a caminhos radiais ou à linha circular. Mesmo uma
estação onde uma radial encontra o círculo tem grau no máximo $4$.
Primeiro encontramos essa estação central analisando os graus dos vértices.
Depois removemos a central do grafo. O que resta é a linha circular com alguns
caminhos pendurados nela, correspondentes aos trechos radiais antes ou depois do
círculo.
Para isolar somente a linha circular, fazemos uma poda de folhas:
\begin{enumerate}
\item calcule o grau de cada vértice desconsiderando a estação central;
\item coloque em uma fila todos os vértices de grau $0$ ou $1$;
\item enquanto a fila não estiver vazia, remova o vértice da frente e reduza
o grau de seus vizinhos ainda não removidos;
\item quando algum vizinho passar a ter grau $1$, coloque-o na fila.
\end{enumerate}
Esse processo remove todos os caminhos que estão pendurados no ciclo. Os
vértices que não foram removidos ao final são exatamente as estações da linha
circular, então basta contá-los.
\textbf{Complexidade de tempo:} $O(N + M)$.
\textbf{Complexidade de espaço:} $O(N + M)$.