feat: new graph problems formatted.
This commit is contained in:
17
metro/statement/description.tex
Normal file
17
metro/statement/description.tex
Normal 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
12
metro/statement/input.tex
Normal 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.
|
||||
9
metro/statement/notes.tex
Normal file
9
metro/statement/notes.tex
Normal 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ô}.
|
||||
2
metro/statement/output.tex
Normal file
2
metro/statement/output.tex
Normal 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ô.
|
||||
0
metro/statement/preamble.tex
Normal file
0
metro/statement/preamble.tex
Normal file
26
metro/statement/tutorial.tex
Normal file
26
metro/statement/tutorial.tex
Normal 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)$.
|
||||
Reference in New Issue
Block a user