QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 512 MB Total points: 100

#23259. Árvores genealógicas

Statistics

Ao explorar as ruínas do antigo reino amazónico, o doutor Kim descobriu duas genealogias de rainhas. Cada uma regista numa árvore as relações entre mães e filhas de uma rainha inicial e das suas descendentes femininas, como abaixo. Por exemplo, na figura 1, $C$ é a rainha inicial, e $F$ e $D$ são filhas de $C$. As filhas de uma pessoa não têm ordem entre si.

problem_23259_311bbb645078eabc59db67925c556b02.png

Figura 1

Verificou-se que, antes de serem descobertas, as genealogias tinham sofrido zero ou mais danos elementares, definidos a seguir.

Dano elementar: uma mãe $P$ e uma filha sua $Q$ são fundidas numa pessoa. Todas as filhas das duas pessoas, exceto $Q$, passam a ser filhas da pessoa fundida.

Por exemplo, fundir $A$ e $F$ na figura 2 dá a figura 3. Aplicar depois um dano elementar que funde $B$ e $D$ na figura 3 (figura 4) dá a figura 5.

problem_23259_301fc0f647a0d1cbb0b535e05a61aab8.png

Figura 2

problem_23259_c78ed595c960e0bc9518e52ef6b2842b.png

Figura 3

problem_23259_d5f09670c76351bb08f1ca75e6d29258.png

Figura 4

problem_23259_d57e4c974c2c77a374e0fc9ae6b10b25.png

Figura 5

Aplicar um dano elementar que funde $E$ e $G$ na figura 5 (figura 6) dá a figura 7.

problem_23259_10c02c0c78bf1eb310b2926ae9fc3c49.png

Figura 6

problem_23259_12e0c2507b723736ba848eaa343015f2.png

Figura 7

Felizmente, nenhum dano elementar envolveu pessoas sem filhas (as de nomes numéricos nas figuras). Todas as pessoas sem filhas mantêm os seus nomes registados e estes são distintos. Porém, nenhum nome das pessoas com filhas (as de nomes alfabéticos) ficou preservado. Assim, as genealogias descobertas têm a forma da figura 8.

problem_23259_cbd63bede0c7fa2828f3422a0ff42eb8.png

Figura 8

Diferentes formas de danificar a mesma genealogia original podem produzir resultados distintos. Contudo, as duas genealogias da figura 9 não podem vir do mesmo original.

problem_23259_e1d983c3048847e7bfb10b40efe38f85.png

Figura 9

Escreva um programa que determine se as duas genealogias dadas podem resultar do mesmo original após zero ou mais danos elementares. Os conjuntos dos nomes de pessoas sem filhas nas genealogias $S$ e $T$ são iguais. Ou seja, o conjunto formado por esses nomes em $S$ é igual ao correspondente conjunto em $T$.

Recomenda-se o nome de ficheiro fonte family.c ou family.cpp, mas pode submetê-lo ao servidor com outro nome.

Entrada

A entrada padrão fornece as informações seguintes. A primeira linha contém o número de pessoas $N_1$ na primeira genealogia, $N_2$ na segunda e o número de pessoas sem filhas $K$ em cada uma. As pessoas são numeradas de $1$ a $N_1$ na primeira e de $1$ a $N_2$ na segunda. Em ambas, as pessoas de $1$ a $K$ não têm filhas, e as pessoas com o mesmo número de $1$ a $K$ têm o mesmo nome.

A linha seguinte dá o número da mãe de cada pessoa na primeira genealogia, por ordem do número da pessoa; se não houver mãe, é dado $0$. A linha seguinte dá da mesma forma os números das mães na segunda genealogia, usando $0$ quando não existe mãe.

Saída

Na saída padrão, apresente YES se as duas genealogias puderem vir do mesmo original, ou NO se for impossível, em letras inglesas maiúsculas.

Subtarefas

Em todas as subtarefas, $1 \le K < N_1,N_2$.

  • 1: 17/100 pontos; $2 \le N_1,N_2 \le 300$. A primeira genealogia não sofreu nenhum dano elementar.
  • 2: 27/100 pontos; $2 \le N_1,N_2 \le 300$.
  • 3: 15/100 pontos; $2 \le N_1,N_2 \le 5\,000$.
  • 4: 41/100 pontos; $2 \le N_1,N_2 \le 300\,000$.

Exemplos

Entrada 1

3 3 2
3 3 0
3 3 0

Saída 1

YES

Entrada 2

5 5 3
4 4 5 5 0
4 5 5 0 4

Saída 2

NO

Entrada 3

7 8 4
7 7 6 6 0 5 5
6 7 7 8 0 5 5 5

Saída 3

NO

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.