posta

Time limit: 0.15s
Memory limit: 32MB
Input: posta.in
Output: posta.out

Într-o ţară minunată, cele N oraşe sunt legate între ele prin N-1 şosele astfel încât din fiecare oraş se poate ajunge în oricare alt oraş. Se ştie costul benzinei necesare pentru parcurgerea fiecărei şosele şi costul de intrare în fiecare oraş. Ţirbi, managerul poştei, trebuie să aleagă sediul poştei, ştiind că va avea de livrat colete în M oraşe precizate, plecând de la sediul poştei şi revenind după livrarea coletelor tot la sediul poştei.

El trebuie să aleagă sediul astfel încât să minimizeze costul transporturilor, ţinând cont că poşta va întocmi un contract cu guvernul prin care va fi scutită de:

  • toate taxele de intrare din oraşul în care îşi stabileşte sediul;
  • prima intrare în oricare alt oraş, iar pentru restul intrărilor se plăteşte taxa.

Cerinţă

Cunoscând numărul de oraşe, şoselele, taxele de intrare în fiecare oraş şi cele M oraşe în care se livrează coletele, ajutaţi-l pe Ţirbi să calculeze costul minim necesar pentru livrarea comenzilor.

Date de intrare

Fişierul de intrare posta.in conţine pe prima linie două numere naturale N şi M separate printr-un spaţiu, cu semnificaţia din enunţ. Pe următoarele N-1 linii se vor afla câte trei numere x, y, z, separate prin câte un spaţiu, cu semnificaţia că există şosea de la oraşul x la oraşul y având costul z. Pe următoarea linie se află N numere naturale reprezentând taxa de intrare din fiecare oraş. Ultima linie conţine M numere naturale reprezentând oraşele în care poşta trebuie să livreze comenzi.

Date de ieşire

Fişierul de ieşire posta.out conţine costul minim al unui transport.

Restricţii

  • 2 ≤ M ≤ N ≤ 100.000
  • Toate taxele şi costurile sunt numere naturale strict pozitive mai mici sau egale cu 100.000.
  • Maşina poate trece prin oricare oraş sau pe orice şosea de oricâte ori.
  • Oraşele în care livrează comenzi sunt distincte.
  • Pentru 10% din teste M ≤ 3
  • Pentru 30% din teste N ≤ 1.000

Exemplu

posta.in

7 3
1 2 3
2 3 5
2 4 2
4 7 4
1 5 7
5 6 1
2 1 1 2 1 2 1
1 4 6

posta.out

28

Explicaţii

Se va alege sediul în oraşul 1 şi se va parcurge următorul traseu: 1→2→4→2→1→5→6→5→1
Costul benzinei este 26
Costul taxelor este 2 (oraşul 2 + oraşul 5)
În oraşele 4 şi 6 nu se plăteşte taxă deoarece se intră o singură dată.

Problem info

ID: 193

Editor: liviu

Author:

Source: ONI 2011 XI-XII: Ziua 1 Problema 3

Tags:

ONI 2011 XI-XII

Log in or sign up to be able to send submissions!