·

Ciência da Computação ·

Análise de Algoritmos

Send your question to AI and receive an answer instantly

Ask Question

Preview text

A cidade de Nlogônia é dividida em distritos não sobrepostos e cada distrito contém um único quartel de bombeiros O departamento central de bombeiros da Nlogônia coopera com o departamento do transporte para manter mapas da cidade de forma que reflitam as condições atuais das ruas da cidade pois todos os dias diversas ruas são interditadas para reparos ou construção A central de transporte atualiza constantemente o mapa de cada distrito com o tempo estimado que se gasta para ir de uma esquina as suas esquinas vizinhas uma característica interessante na cidade de Nlogônia é que todas as ruas da cidade são de mãoúnica Quando um incêndio é relatado um aviso do departamento central é enviado para o quartel de bombeiro no distrito onde se encontra o incêndio O comandante do departamento central de bombeiro gostaria que além da esquina onde ocorre o incêndio fosse envidada a rota mais rápida do quartel do bombeiro até a esquina onde acontece o incêndio Por sorte no departamento central de bombeiro tem um bombeiro formado em Ciência da Computação que adora programar ele propôs o algoritmo abaixo que calcula a rota do quartel do bombeiro até a esquina no distrito onde ocorre o incêndio No algoritmo considere que as esquinas de um mapa de um distrito são numeradas por um número inteiro positivo com o quartel de bombeiro do distrito sempre na esquina 1 Algoritmo Rota mais rápida M Entrada o mapa M do distrito onde ocorre o incêndio com esquinas as suas interligações e tempo para ir de uma esquina a outra Saída os tempos T e as rotas mais rápidas R para ir da esquina 1 até todas as esquinas do mapa M Estrutura auxiliar Conjunto E que armazena as esquinas do mapa M início inicializar E com as esquinas de M para cada esquina e em E faça Te infinito fimpara T1 0 tempo gasto para ir da esquina 1 até a esquina 1 enquanto E não estiver vazio faça v é uma esquina em E com menor custo no vetor T E E v remove a esquina v de E para cada esquina e que seja acessada a partir da esquina v no Mapa M tal que a esquina e esteja presente em E faça se Te Tv tempo par ir de v até e então Te Tv tempo par ir de v até e fimse fimpara fimenquanto retorna T Fim A sua missão é ajudar o departamento central dos bombeiros implementando o algoritmo proposto que encontre a rota mais rápida Note que o algoritmo ainda não encontra a rota mais rápida R você consegue ajudar o bombeiro cientista da computação a modificar o algoritmo de forma que além do tempos para ir da esquina 1 até as outras esquinas do mapa o algoritmo agora calcula também a rota mais rápida R BOMBEIROS 3 6 4 6 3 5 2 4 2 3 1 1 4 2 3 5 1 1 5 4 4 5 1 5 6 1 1 3 8 6 2 2 0 Entrada do programa No seu programa as informações referentes a um distrito são informadas por um arquivo de texto entrada que contém a esquina onde é o incêndio e as informações sobre as vias que não estão interditadas com seu respectivo tempo para ir de uma esquina a outra Exemplos de arquivos de entrada A primeira linha do arquivo de entrada consiste em um único inteiro que representa o número da esquina onde ocorre o incêndio na linha seguinte a quantidade de esquinas que constam no mapa As linhas seguintes consistem em uma tripla de inteiros positivos maiores que zero separados por espaços em branco que são as esquinas adjacentes das ruas que não estão interditadas e tempo gasto para ir de uma esquina para outra Por exemplo se a tripla 4 6 3 estiver em uma linha do arquivo então a rua no sentido da esquina 4 para esquina 6 está aberta e para ir da esquina 4 para 6 gasta 3 minutos Como as ruas no mapa são de mãoúnica só podemos ir da esquina 4 para esquina 6 no sentido contrário não é possível Além disso para facilitar sua implementação considere que não há rotas que façam que formam ciclo pois os bombeiros não querem que seus caminhões que dirijam em círculos A última linha do arquivo temos um único 0 indicando que a sequência de ruas não interditadas foi finalizada Saída do programa A saída do programa deve listar na tela do computador a rota mais rápida da esquina 1 até a esquina onde ocorre o incêndio no exemplo a esquina 3 e informar também qual é o tempo total da rota Exemplo de saída na tela do computador para o arquivo informado Observações importantes O programa entregue será avaliado de acordo com os seguintes itens Siga fielmente o enunciado proposto implementado o Algoritmo Rota mais rápidaM conforme apresentado no enunciado O programa deve estar na linguagem C e testados no compilador do CodeBlocks 1712 caso programa apresentarem warning ao serem compilados serão penalizados Após a execução o programa deve finalizar com retorno igual a 0 Clareza e organização programas com código confuso linhas longas variáveis com nomes não significativos etc e desorganizado sem indentação sem comentários etc também serão penalizados rota até a esquina 3 1 4 5 6 2 3 tempo calculado para rota 7 min FGHIJKL AAAAAA EEEEEEEEE EEEEEEEEE 1111111111 EEEEEEEEE 11111111 EEEEEEEEE 11111111 EEEE 11111111 EEEE 11111111 FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL FGHIJKL