XXVI Olimpíada Brasileira de Informática
Submeta sua solução

Nome do arquivo: caixeiro.x, onde x deve ser c, cpp, java, js ou py

Caixeiro Viajante

Paulo é um caixeiro viajante, que visita clientes nas cidades do reino da Nlogônia para demonstrar novos produtos da empresa para a qual trabalha.

Paulo está organizando uma viagem para visitar cada uma das N cidades do reino. A Nlogônia é imensa, as cidades são distantes, de forma que Paulo vai sempre usar transporte aéreo para ir de uma cidade a outra. Paulo conhece o tempo de vôo entre cada par de cidades, mas não gosta de viajar de avião e quer minimizar o tempo de vôo total para a viagem. No entanto, Paulo tem uma demanda peculiar quanto à ordem das cidades que vai visitar.

Na Nlogônia os "nomes" das cidades são números inteiros de 1 a N. Paulo deseja que a ordem das cidades que vai visitar obedeçam à seguinte regra: quando Paulo visitar a cidade K, ou todas as cidades de nomes menores do que K já foram visitadas ou todas serão visitadas após K.

Por exemplo, se N é igual a três, Paulo pode visitar as cidades nas ordens 1,2,3 ou na ordem 3,2,1 ou na ordem 2,1,3, mas não pode visitá-las na ordem 1,3,2, pois quando visita a cidade 3, como 1 já foi visitada, 2 também deveria ter sido visitada.

Escreva um programa para determinar o tempo mínimo total de vôo para a viagem de Paulo, iniciando em qualquer cidade, terminando em qualquer cidade, mas visitando cada cidade uma única vez.

Entrada

A primeira linha da entrada contém um inteiro N, o número de cidades. Cada uma das N × (N-1)/2 linhas contém três inteiros A, B e T, indicando que o tempo de vôo da cidade A para a cidade B é T (o tempo de vôo da cidade B para a cidade A também é T).

Saída

Seu programa deve produzir uma única linha, contendo um único número inteiro, o tempo mínimo total de vôo para a viagem de Paulo.

Restrições

  • 2 ≤ N ≤ 1500
  • 1 ≤ A < B ≤ N
  • 1 ≤ T ≤ 1000

Informações sobre a pontuação

  • Para um conjunto de casos de testes valendo 25 pontos, 1 ≤ N ≤ 10.
  • Para um conjunto adicional de casos de testes valendo 50 pontos, 1 ≤ N ≤ 20.
  • Para um conjunto adicional de casos de testes valendo 25 pontos, nenhuma restrição adicional.

Exemplos

Entrada
3
1 2 5
1 3 2
2 3 4
Saída
7
	

 

Entrada
4
1 2 15
1 3 7
1 4 8
2 3 16
2 4 9
3 4 12
Saída
31
	

 

Promoção:
sbc
Patrocínio
 
Apoio
 
Coordenação