Tree Matching

Solução escrita por Enzo Dantas e Caique Paiva

Um emparelhamento é um conjunto de arestas onde cada vértice tem grau 1 ou 0. Dada uma árvore com $$n$$ vértices, qual é o maior número de arestas em um emparelhamento?

Input

A primeira linha tem um inteiro $$n$$: O número de vértices. Os vértices são numerados em $$1, 2, 3, \cdots, n$$.

Então, temos $$n-1$$ linhas descrevendo as arestas. Cada linha tem dois inteiros $$a, b$$: tem uma aresta de $$a$$ para $$b$$.

Output

Imprima um inteiro: a quantidade máxima de pares.

Constantes

$$1 \le n \le 2 \cdot 10^5$$

$$1 \le a, b \le n$$

Entrada Saída
5
1 2
1 3
3 4
3 5
2

Explicação: O maior emparelhamento possível é $$(1, 2)$$ e $$(3, 4)$$.

(Link para submeter o problema).

[spoiler title=’Dica’ style=’purple’ collapse_link=’true’]Olhe para as folhas do grafo.[/spoiler]

[spoiler title=’Solução’ style=’blue’ collapse_link=’true’]

Solução gulosa:

Perceba que não faz sentido deixar uma folha e seu pai despareados, a não ser que o pai esteja pareado com outra folha. Assim, começando pelas folhas e subindo, podemos escolher gulosamente um vértice não pareado com nenhum de seus filhos e pareá-lo com um deles caso ambos estejam despareados.

Segue o código para melhor entendimento

[/spoiler]