Nos laboratórios das ONI estudam-se vários tópicos de várias áreas. Recentemente tem havido um grande interesse em sintetizar proteínas. Uma proteína é dada por um conjunto de aminoácidos que contêm ligações entre pares de aminoácidos. Uma proteína tem ainda de ser conexa, ou seja, para cada par de aminoácidos existe uma sequência de ligações que os junta.
Um grau de liberdade de uma proteína é um conjunto de aminoácidos (possivelmente vazio) tal que não existe nenhuma ligação entre quaisquer dois aminoácidos desse conjunto.
Por exemplo, consideremos uma proteína com 4 aminoácidos numerados de 1 a 4, com ligações entre os aminoácidos (1, 2), (2, 3), e (3, 4). A imagem a baixo representa esta proteína.
Então esta proteína tem 8 graus de liberdade, dados pelos seguintes conjuntos: {}, {1}, {2}, {3}, {4}, {1, 3}, {1, 4}, {2, 4}. A imagem a baixo representa estas configurações.
Queremos sintetizar uma proteína de tipo X. Estas proteínas podem ter qualquer número de aminoácidos entre 1 e 1 000 e qualquer número de ligações, mas um aminoácido só pode estar ligado a no máximo dois outros aminoácidos.
Serão dados Q pedidos de sintetizar uma proteína do tipo X. Cada pedido consiste num inteiro Ki e para cada um deves produzir uma proteína de tipo X com exatamente Ki graus de liberdade ou indicar que não é possível.
Se Q = 2 e tivermos os seguintes pedidos:
Para o primeiro pedido não existe nenhum tipo de proteína de tipo X com 9 graus de liberdade. Para o segundo pedido o exemplo anterior satisfaz este critério e é do tipo X.
São garantidos os seguintes limites em todos os casos de teste desta parte que irão ser colocados ao programa:
1 ≤ Q ≤ 100 | Número de Pedidos | |
1 ≤ Ki ≤ 1 000 | Número de graus de liberdade |
Os casos de teste desta parte do problema estão organizados em dois grupos:
Grupo | Número de Pontos | Restrições adicionais |
---|---|---|
1 | 15 | Ki ≤ 20 |
2 | 35 |
Queremos sintetizar uma proteína de tipo Z. Estas proteínas podem ter qualquer número de aminoácidos entre 1 e 1 000 e qualquer número de ligações, mas não podem conter qualquer ciclo, ou seja, não podem conter uma sequência de ligações entre aminoácidos distintos que começa e termina no mesmo aminoácido.
Serão dados Q pedidos de sintetizar uma proteína do tipo X. Cada pedido consiste num inteiro Ki e para cada um deves produzir uma proteína de tipo Z com exatamente Ki graus de liberdade ou indicar que não é possível.
Se Q = 2 e tivermos os seguintes pedidos:
Para o primeiro pedido não existe nenhum tipo de proteína de tipo Z com 7 graus de liberdade. Para o segundo pedido o exemplo anterior satisfaz este critério e é do tipo Z.
São garantidos os seguintes limites em todos os casos de teste desta parte que irão ser colocados ao programa:
1 ≤ Q ≤ 100 | Número de Pedidos | |
1 ≤ Ki ≤ 1 000 | Número de graus de liberdade |
Os casos de teste desta parte do problema estão organizados em dois grupos:
Grupo | Número de Pontos | Restrições adicionais |
---|---|---|
3 | 15 | Ki ≤ 20 |
4 | 35 |
Os casos de teste do problema estão organizados em 4 grupos com restrições adicionais diferentes:
Grupo | Número de Pontos | Parte | Restrições adicionais |
---|---|---|---|
1 | 15 | Parte I | Ki ≤ 20 |
2 | 35 | Parte I | |
3 | 15 | Parte II | Ki ≤ 20 |
4 | 35 | Parte II |
A primeira linha contém um inteiro P, que representa a parte que o caso de teste representa. Se for 1, então o caso de teste refere-se à Parte I, se for 2 então refere-se à Parte II.
Segue-se uma linha com um inteiro Q, representando o número de pedidos.
Seguem-se Q linhas, cada uma contendo um inteiro Ki, que representa o número de graus de liberdade pedido.
O output deve conter Q secções.
Para a i-ésima secção, se não existir uma proteína com Ki graus de liberdade (do tipo indicado pela Parte) então a secção deve conter apenas o inteiro -1. Caso contrário, a secção deve conter primeiro dois inteiros N e M, representando o número de aminoácidos e de ligações, respetivamente. Devem seguir-se M linhas, cada uma com um par de inteiros entre 1 e N representando ligações entre dois aminoácidos.
Nota: podem existir vários outputs válidos, todos serão considerados corretos.
Nota: para todos os outputs N deve ser entre 1 e 1 000, caso contrário a resposta será considerada errada.
1 2 9 8
-1 4 3 1 2 2 3 3 4
Este exemplo corresponde ao exemplo mencionado na Parte I do enunciado.
2 2 7 8
-1 4 3 1 2 2 3 3 4
Este exemplo corresponde ao exemplo mencionado na Parte II do enunciado.