Problem
                                  Escreva um programa que contenha uma implementação de uma estrutura de dados para um conjunto de conjuntos disjuntos (conjuntos disjuntos) em 2 maneiras (heurística de classificação e aleatória)   e processar solicitações como esta:
 
RESET n — crie uma nova série de subconjuntos: um conjunto de apenas o elemento 0, de apenas o elemento 1 e assim por diante até um conjunto de apenas o elemento n–1 inclusive. Se a estrutura já contiver algum outro conjunto de subconjuntos disjuntos, toda a informação relevante será perdida. Neste caso, duas palavras devem ser exibidas na saída padrão (tela) "RESET DONE" separadas por um espaço.
 
JUNTAR j k — combine os subconjuntos aos quais o elemento j e o elemento k pertencem. Caso os elementos já pertençam ao mesmo subconjunto, imprima a palavra "JÁ" na saída padrão (tela), seguida dos mesmos números j e k, separados por espaços, na mesma ordem. Se os elementos até então pertenciam a diferentes subconjuntos, então a ação ocorre apenas com os dados na memória, nada é exibido na tela.
 
CHECK j k — verifique se o elemento j e o elemento k pertencem ao mesmo subconjunto; emitir a palavra "SIM" para a saída padrão (tela); (se houver) ou a palavra «NÃO» (se diferente).
BREAK - parar de receber solicitações.
 
Entrada
A entrada contém uma sequência de consultas RESET, JOIN e CHECK — cada um em uma linha separada, seguindo o formato descrito acima. É garantido que a primeira linha contém uma consulta RESET e que o número total de consultas RESET não excede 5. O número total de todas as consultas não excede 200.000. O valor de n em cada consulta RESET não excede 100.000. Em cada JOIN e em cada consulta CHECK, ambos os números estarão no intervalo de 0 a n–1, onde n — parâmetro do último pedido de RESET executado.
 
Saída
Para RESET, CHECK e aquelas consultas JOIN onde os elementos já pertencem ao mesmo subconjunto, exiba o resultado correspondente (em uma linha separada) na saída padrão (tela).
 
Nota
Responda «NÃO» são dadas para pedidos "CHECK 2 11" e "CHECK 9 1", a resposta é "JÁ 4 1" — ao segundo dos pedidos "JOIN 4 1" (10ª linha), "SIM" — para "CHECK 5 10".
 
| Entrada | 
Saída | 
| 
 RESET 15 
JUNTAR 14 10 
JUNTAR 13 8 
JUNTAR 0 9 
JUNTAR 8 3 
JUNTAR 4 1 
JUNTAR 10 5 
JUNTAR 8 4 
VERIFIQUE 2 11 
JUNTAR 4 1 
JUNTAR 2 6 
CHEQUE 9 1 
JUNTAR 6 5 
CHEQUE 10 5 
BREAK 
 | 
 RESET CONCLUÍDO 
NÃO 
JÁ 4 1 
NÃO 
SIM 
 |