PUC-Rio
Departamento de Informática
Profs. Marcus Vinicius S. Poggi de Aragão
Período: 2004.2
Horário: 3as-feiras e 5as-feiras de 15-17
21 de outubro de 2004
Data da Entrega: 11 de novembro de 2004

ESTRUTURAS DISCRETAS (INF 1631)

1o Trabalho de Implementação

Descrição

Este trabalho prático consiste em desenvolver um código para resolver o problema descrito abaixo. O desenvolvimento deste código deve seguir o seguinte roteiro: A descrição do problema, abaixo, contém a especificação do arquivo de entrada e da saída desejada. A corretude código será testada sobre um arquivo de entrada que será distribuido após a entrega do trabalho. O trabalho entregue deve conter:
Go Easy

Uma cidade acaba de implantar um novo sistema de cobrança dos transportes públicos urbanos. O sistema de transportes opera com trens e ônibus. A tarifação é feita em unidades de transporte UTs (uma espécie de vale transporte com valor fixo). Para o ônibus cada viagem é paga. A tarifa para os trens é baseada nas zonas das estações de entrada e de saída do trem. O valor é determinado seguindo as regras:
  1. Paga-se 2 UTs toda vez que se entra no sistema de transportes, seja em um trem ou em um ônibus.
  2. Se passageiro pegou um trem, ele paga 4 UTs se as zonas da estações de origem e destino forem diferentes, caso contrário nenhuma UT adicional é paga.
  3. Para cada ônibus que o passageiro pega ele paga 1 UT.
Um mapa do sistema de transportes é fornecido como entrada. Nele encontra-se uma lista das estações com suas respectivas zonas (que são usadas pelos trens e pelos ônibus, por exemplo, um ponto de ônibus é uma estação sem trem). Encontra-se também os itinerários dos trens e dos ônibus dados por sequências de estações.

Os trens e os ônibus movem-se nos dois sentidos em cada itinerário e nenhum trem ou ônibus passa duas vezes em uma mesma estação durante uma ÚNICA viagem (ao final de cada viagem os passageiros devem descer do trem ou ônibus).

O objetivo do trabalho é implementar um algoritmo que, dados o mapa do sistema de transportes, os itinerários dos trens e dos ônibus, a origem e o destino do passageiro, encontre os ônibus e trens que o passageiro deve pegar, explicitando onde este deve trocar de ônibus ou de trem, de modo que o custo em UTs seja mínimo.

Um arquivo contendo várias entradas de dados (os descritos acima) será disponibilizado. Em todas as entradas (mapas) existem meios para se transportar entre qualquer par de estações. Outra observação importante é de que as regras são estritas, se um passageiro pega duas vezes o mesmo ônibus ele paga as duas vezes, se ele entra duas vezes na mesma zona (em viagens diferentes) ele paga as duas vezes.

Descrição do Arquivo de Entrada

A primeira linha contém dois inteiros Z e S, que indicam respectivamente o número de zonas (1£ Z £ 30) e o número de estações de trem/ônibus na cidade (1£ S £ 100). Cada estação tem um identificador único (de 1 a S) pertence a exatamente uma zona. As próximas Z linhas descrevem as estações que pertencem a cada zona. As linhas começam com um inteiro K indicando o número de estações na zona, seguido por K inteiros representando as estações nesta zona. Em seguida, o arquivo contém um linha com dois inteiros T e B, representando respectivamente o número de itinerários de trem (1£ T £ 50) e ônibus (1£ B £ 50). Nas T+B linhas seguintes estão os T itinerários de trem seguidos dos B itinerários de ônibus. A descrição de cada itinerário começa com um inteiro L (2 £ L £ S) indicando o número de estações no itinerário, seguido por L inteiros representando a sequência das estações que definem o itinerário. Finalmente, vem um linha com dois inteiros X e Y (1£ X £ S, 1£ Y £ S e X ¹ Y) indicando as estações de origem e de destino do passageiro respectivamente. O final o arquivo é indicado pelo inteiros Z e S com valor zero.

Descrição do Arquivo de Saída

Para cada entrada do arquivo acima você deve imprimir o custo mínimo do transporte entre a origem e o destino dados assim como as ações do passageiro para obter esse custo.


This document was translated from LATEX by HEVEA.