Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

MINIMO - Final Mundial de 2008

Preocupado com a atual situação de crise no transporte aéreo, o diretor regional do concurso do ICPC no Brasil já iniciou seus preparativos para fazer as reservas das passagens aéreas para as finais mundiais de Banff em 2008. O primeiro passo foi estudar a malha aérea disponível, em que cada vôo tem um certo preço e liga duas cidades (estamos, na verdade, chamando de vôo apenas um trecho non stop de um vôo comercial). O objetivo do diretor é fazer várias consultas nesta malha de vôos.

Em geral desejamos fazer vôos sem escalas, mas estes podem ser muito caros. Para contornar este fato o diretor deseja permitir algumas escalas possíveis. Assim, ele ordenou as várias cidades da malha em sua ordem de preferência para fazer escala. Ou seja, a cidade de índice 1 é a que ele prefere fazer escala, seguida pela cidade 2, e assim por diante.

As consultas que o diretor fará são, então do seguinte tipo. É dada a cidade de partida e de chegada e um número t de cidades em que o diretor permite que sejam feitas escalas. Seu programa deverá encontrar o custo de um vôo de custo mínimo entre as cidades que faça, no máximo, escalas nestas cidades. Por exemplo, se t=1 você deverá encontrar o custo de um vôo de custo mínimo entre as duas cidades que seja, ou non stop ou que faça uma escala na primeira cidade.

Entrada

A entrada é composta de diversas instâncias. A primeira linha de cada instância consiste em dois inteiros n (1 <= n <= 100) e m (1 <= m <= 100000), indicando o número de cidades e o número de escalas. Nas m linhas seguintes temos três inteiros u,v e w (1 <= u,v <= n e 0 <= w <= 100) indicando que existe uma escala que vai de u para v com custo w. Em seguida um inteiro c (1 <= c <= 10000) indicando o número de consultas, e nas c linhas seguintes temos três inteiros o,d e t (1 <= o,d <= n e 0 <= t <= n) onde o é a cidade de origem, d é a cidade de destino e t indica que as cidades 1,2,..,t podem ser usadas para escalas.

A entrada termina com final de arquivo.

Saída

Para cada instância, você deverá imprimir um identificador Instancia k, onde k é o número da instância atual. Para cada consulta, na ordem da entrada, você deve imprimir o custo mínimo ou -1 caso não exista caminho entre as duas cidades.

Após cada instância imprima uma linha em branco.

Exemplo

Entrada:
4 7
4 1 0
2 1 3
1 4 20
2 3 15
4 2 1
3 1 21
1 2 0
3
2 1 0
4 2 2
4 3 1
5 10
4 5 2
2 1 4
1 2 7
2 4 7
5 2 1
4 1 2
4 5 12
5 4 4
5 3 7
3 5 9
4
2 5 0
3 4 5
4 5 1
2 3 2

Saída:

Instancia 1
3
0
-1


Instancia 2
-1
13
2
-1

Adicionado por:Wanderley Guimarăes
Data:2007-08-28
Tempo limite:1s
Tamanho do fonte:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Linguagem permitida:Todas exceto: ASM64 CLOJURE ERL FSHARP JS-RHINO NODEJS PERL6 PY_NBC SCALA TCL VB.NET
Origem:Seletiva para Maratona de Programação do IME - 2007

hide comments
2014-08-28 16:09:54 Raul Dario Cabrera Tapia [POLI-USP]
acho q se vc usar getchar (bizarro) no lugar de scanf... o tempo fica ainda mais rapido ;)
2012-08-08 05:53:10 Rodrigo Roim Ferreira [ITA]


Last edit: 2012-08-08 05:57:01
2011-09-07 04:59:40 Edgar Lavor
Interessante, tomei TLE usando cout, mas passou em 0.40 usando printf =]
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.