Os testes para as listas de exercícios serão feitos via arquivos.
Lembre-se: toda memória alocada deve ser desalocada.
Seguem abaixo as especificações deles.

==========
Questão 1
==========
Arquivo fonte: quest1.c
Arquivo de entrada: quest1.in
Arquivo de saída: quest1.out

O arquivo de entrada consiste de vários conjuntos de dados. Cada conjunto começa com uma linha contendo o número X de vértices do grafo. As próximas X linhas de cada conjunto contém as listas de adjacências do grafo. O primeiro número de cada uma das X linhas é um inteiro N tal que 1 <= N <= X. Depois seguem-se vários pares de inteiros. Cada par possui um vértice V adjacente ao vértice N e o peso da aresta (N,V). A lista de pares termina quando o primeiro termo desse par é 0(zero) (esse par não deve ser considerado). Queremos identificar a árvore de menor custo desse grafo.
O arquivo de entrada é terminado por um conjunto de dados começando com X = 0. Esse conjunto não deve ser processado. Considere que 0 <= X <= 100.

Entrada exemplo:
3
1  2 5  3 3  0
2  1 5  3 7  0
3  1 3  2 7  0
3
3  2 7  0
2  1 5  3 7  0
1  2 5  0
5
1  2 25  3 30  4 10  0
2  1 25  3 50  5 15  0
3  1 30  2 50  4 40  5 20  0
4  1 10  3 40  5  5  0
5  2 15  3 20  4  5  0
0

Para cada conjunto, você deve imprimir X + 2 linhas. Na primeira linha, imprima o número do conjunto de dado, como mostrado na saída exemplo. Na próxima linha, imprima o peso da árvore encontrada (soma dos pesos de todas as suas arestas). Nas próximas X linhas, imprima a nova lista de adjacências do grafo (árvore), sem os custos.
Note que podem existir várias respostas, dê preferencia ao caminho com vértices de menor índice; para tanto, basta direcionar o heap de forma que dê prioridade ao menor índice.
Uma linha em branco separa cada conjunto.

Saída do exemplo acima:
Conjunto #1
Peso: 8
1  2  3
2  1
3  1

Conjunto #2
Peso: 12
1  2
2  1  3
3  2

Conjunto #3
Peso: 50
1  4
2  5
3  5
4  1  5
5  2  3  4




==========
Questão 2
==========
Arquivo fonte: quest2.c
Arquivo de entrada: quest2.in
Arquivo de saída: quest2.out

O arquivo de entrada consiste de vários conjuntos de dados. Cada conjunto começa com uma linha contendo o número X de vértices do grafo. As próximas X linhas de cada conjunto contém as listas de adjacências do grafo. O primeiro número de cada uma das X linhas é um inteiro N tal que 1 <= N <= X. Depois seguem-se vá pares de inteiros. Cada par possui um vértice V adjacente ao vértice N e o peso da aresta (N,V). A lista de pares termina quando o primeiro termo desse par é 0(zero) (esse par não deve ser considerado). Após as X linhas, segue uma linha contendo um inteiro K que é um vértice do grafo. Queremos identificar as arestas que compõem os caminhos mais curtos de K para cada um dos vértices do grafo.
O arquivo de entrada é terminado por um conjunto de dados começando com X = 0. Esse conjunto não deve ser processado. Considere que 0 <= X <= 100.

Entrada exemplo:
4
4  3 10  1  5  0
2  1  2  3  4  0
3  2  4  4 10  0
1  2  2  4  5  0
2
4
4  3  20  1 70  0
2  1 100  3 10  0
3  2  10  4 20  0
1  2 100  4 70  0
2
4
4  3  20  1  7  0
2  1 100  3 10  0
3  2  10  4 20  0
1  2 100  4  7  0
2
0

Para cada conjunto, voce deve imprimir X linhas. Na primeira linha, imprima o número do conjunto de dado, como mostrado na saída exemplo. Nas proximas x-1 linhas imprima um par K -> V: (onde V é um vértice do grafo), o custo do melhor caminho até V e os vértices que compõem o melhor caminho para V.
Note que podem existir várias respostas, dê preferencia ao caminho com vértices de menor índice; para tanto, basta direcionar o heap de forma que dê prioridade ao menor índice.
Uma linha em branco separa cada conjunto.

Saída do exemplo acima:
Conjunto #1
2 -> 1: Custo = 2 Caminho = 2 1
2 -> 3: Custo = 4 Caminho = 2 3
2 -> 4: Custo = 7 Caminho = 2 1 4

Conjunto #2
2 -> 1: Custo = 100 Caminho = 2 1
2 -> 3: Custo = 10 Caminho = 2 3
2 -> 4: Custo = 30 Caminho = 2 3 4

Conjunto #3
2 -> 1: Custo = 37 Caminho = 2 3 4 1
2 -> 3: Custo = 10 Caminho = 2 3
2 -> 4: Custo = 30 Caminho = 2 3 4




[Última alteração em 27/05/2000]