Os testes para as listas de exercicios se dara via arquivos. Seguem abaixo as especificacoes deles. ------------- - Questao 1 - ------------- Arquivo fonte: quest1.c Arquivo de entrada: quest1.in O arquivo de entrada consiste de varios conjuntos de dados. Cada conjunto comeca com uma linha contendo o numero "x" de vertices de um grafo. As proximas "x" linhas contem as listas de adjacencias do grafo que devem ser processadas. O primeiro numero de cada uma das "x" linhas e' um inteiro n tal que 1 <= n <= x. Depois seguem-se varios inteiros representando vertices adjacentes ao vertice n. A lista de vertices adjacentes termina com o inteiro 0. O arquivo de entrada e' terminado por um conjunto de dados comecando com "x = 0". Esse conjunto nao deve ser processado. Considere que 0 <= x <= 100. Entrada exemplo: 4 1 2 4 0 2 1 3 0 3 2 4 0 4 3 1 0 5 1 2 4 0 2 1 3 0 3 2 4 0 4 3 1 5 0 5 4 0 0 Arquivo de Saida: quest1.out Para cada conjunto, voce deve imprimir "x+1" linhas. Na primeira linha, imprima o numero do conjunto, como mostrado na saida exemplo. Nas proximas "x" linhas,imprima o grafo resultante ao direcionar as arestas deste grafo de forma que o grau de entrada de cada vértice no grafo direcionado gerado na saída seja no máximo 1. Uma linha em branco separa cada conjunto. Imprima o grafo no mesmo formato do arquivo de entrada, mas sem o '0' (zero) final e sem espacos no fim das linhas. Saida exemplo correspondente a entrada acima: Conjunto #1 1 4 2 1 3 2 4 3 Conjunto #2 1 4 2 1 3 2 4 3 5 5 ------------- - Questao 2 - ------------- Arquivo fonte: quest2.c Arquivo de entrada: quest2.in O arquivo de entrada consiste de varios conjuntos de dados. Cada conjunto comeca com uma linha contendo o numero "x" de vertices de uma arvore. As proximas "x" linhas contem as listas de adjacencias da arvore que devem ser processadas. O primeiro numero de cada uma das "x" linhas e' um inteiro n tal que 1 <= n <= x. Em seguida vem um espaco em branco e, entao, uma das 26 letras do alfabeto associada ao vertice n. Depois seguem-se varios inteiros representando vertices adjacentes ao vertice n. A lista de vertices adjacentes termina com o inteiro 0. Apos as "x" linhas vem uma cadeia P formada por 1<=m<=1000 letras do alfabeto (ingles). O arquivo de entrada e' terminado por um conjunto de dados comecando com "x = 0". Esse conjunto nao deve ser processado. Considere que 0 <= x <= 1000. Entrada exemplo: 14 1 a 2 3 4 0 2 b 5 6 9 0 3 c 7 8 0 4 d 10 11 12 13 14 0 5 e 0 6 f 0 7 g 0 8 h 0 9 i 0 10 j 0 11 k 0 12 l 0 13 m 0 14 n 0 abi 14 1 a 2 3 4 0 2 b 5 6 9 0 3 c 7 8 0 4 d 10 11 12 13 14 0 5 e 0 6 f 0 7 g 0 8 h 0 9 i 9 10 j 0 11 k 0 12 l 0 13 m 0 14 n 0 abcdefghi 18 1 a 2 3 4 0 2 b 5 6 9 0 3 c 7 8 0 4 d 10 11 12 13 14 0 5 e 0 6 f 0 7 g 0 8 h 0 9 i 9 10 j 15 0 11 k 0 12 l 0 13 m 0 14 n 0 15 d 16 0 16 j 17 0 17 a 18 0 18 j 0 dja 18 1 a 2 3 4 0 2 b 5 6 9 0 3 c 7 8 0 4 d 10 11 12 13 14 0 5 e 0 6 f 0 7 g 0 8 h 0 9 i 9 10 j 15 0 11 k 0 12 l 0 13 m 0 14 n 0 15 d 16 0 16 j 17 0 17 a 18 0 18 j 0 djb 0 Arquivo de Saida: quest2.out Para cada conjunto, voce deve imprimir duas linhas. Na primeira linha, imprima o numero do conjunto, como mostrado na saida exemplo. Na segunda linha, "S" se o padrão P aparece pelo menos uma vez em um caminho da raiz até uma folha e "N" caso contrario. Uma linha em branco separa cada conjunto. Saida exemplo correspondente a entrada acima: Conjunto #1 S Conjunto #2 N Conjunto #3 S Conjunto #4 N ------------- - Questao 3 - ------------- Arquivo fonte: quest3.c Arquivo de entrada: quest3.in O arquivo de entrada consiste de varios conjuntos de dados. Cada conjunto comeca com uma linha contendo o numero "x" de vertices de um grafo. As proximas "x" linhas contem as listas de adjacencias do grafo que devem ser processadas. O primeiro numero de cada uma das "x" linhas e' um inteiro n tal que 1 <= n <= x. Depois seguem-se varios pares de inteiros em que cada par representa, um vertice v adjacente ao vertice n e o peso da aresta n-v. Apos as "x" linhas do grafo segue uma linha contendo um inteiro k que é um vertice de G. Queremos identificar as arestas que compõem os caminhos mais curtos de k para cada um dos vértices de G. O arquivo de entrada e' terminado por um conjunto de dados comecando com "x = 0". Esse conjunto nao 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 Arquivo de Saida: quest3.out Para cada conjunto, voce deve imprimir "x" linhas, em que x e' o numero de vertices do grafo correspondente ao conjunto. Na primeira linha, imprima o numero do conjunto, como mostrado na saida exemplo. Nas proximas "x-1" linhas imprima os caminhos para cada par de vertices (k,z) como mostrado no exemplo abaixo. Uma linha em branco separa cada conjunto. Saida exemplo: 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