Rede Ótica
Os caciques da região de Tutuaçu pretendem integrar suas
tribos à chamada "aldeia global". A primeira
providência foi a distribuição de telefones
celulares a todos os pajés. Agora, planejam montar uma rede de
fibra ótica interligando todas as tabas. Esta empreitada requer
que sejam abertas novas picadas na mata, passando por reservas de
flora e fauna. Conscientes da necessidade de preservar o máximo
possível o meio ambiente, os caciques encomendaram um estudo do
impacto ambiental do projeto. Será que você consegue
ajudá-los a projetar a rede de fibra ótica?
Tarefa
Vamos denominar uma ligação de fibra ótica entre
duas tabas de um ramo de rede. Para possibilitar a
comunicação entre todas as tabas é
necessário que todas elas estejam interligadas, direta
(utilizando um ramo de rede) ou indiretamente (utilizando mais de um
ramo). Os caciques conseguiram a informação do impacto
ambiental que causará a construção dos
ramos. Alguns ramos, no entanto, nem foram considerados no estudo
ambiental, pois sua construção é
impossível.
Sua tarefa é escrever um programa para determinar quais ramos
devem ser construídos, de forma a possibilitar a
comunicação entre todas as tabas, causando o menor
impacto ambiental possível.
Entrada
A entrada é composta de vários conjuntos de teste. A
primeira linha de um conjunto de teste contém dois
números inteiros positivos N e M que indicam, respectivamente,
o número de tabas e o número de ramos de redes
possíveis. As tabas são numeradas de 1 a N. As M linhas
seguintes contêm três inteiros positivos X, Y e Z, que
indicam que o ramo de rede que liga a taba X à taba Y tem
impacto ambiental Z. Com os conjuntos de teste dados sempre é
possível interligar todas as tabas. O final da entrada é
indicado quando N = 0.
Exemplo de Entrada
3 3
1 2 10
2 3 10
3 1 10
5 6
1 2 15
1 3 12
2 4 13
2 5 5
3 2 6
3 4 6
0 0
Saída
Para cada conjunto de teste da entrada seu programa deve produzir uma
lista dos ramos de redes que devem ser construídos. A lista
deve ser precedida de uma linha que identifica o conjunto de teste, no
formato "Teste n", onde n é numerado a partir de 1. A
lista é composta por uma sequência de ramos a serem
construídos, um ramo por linha. Um ramo é descrito por
um par de tabas X e Y , com X < Y. Os ramos de rede podem ser
listados em qualquer ordem, mas não deve haver
repetição. Se houver mais de uma solução
possível, imprima apenas uma delas. O final de uma lista de
ramos deve ser marcado com uma linha em branco. A grafia mostrada no
Exemplo de Saída, abaixo, deve ser seguida rigorosamente.
Exemplo de Saída
Teste 1
1 2
1 3
Teste 2
1 3
2 3
2 5
3 4
(esta saída corresponde ao exemplo de entrada acima)
Restrições
0 ≤ N ≤ 100 (N = 0 apenas para indicar o fim da entrada)
1 ≤ M ≤ N(N-1)/2
1 ≤ X ≤ 100
1 ≤ Y ≤ 100
1 ≤ Z ≤ 100
|