team

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

Sâmbăta o petrec cu prietenii la discoteca ”Why not“ din centrul oraşului. De acolo plecăm în zori pp persoane, în gaşcă, şi trebuie să ajungem fiecare acasă. Atât la discotecă, la punctele de destinaţie ale membrilor găştii, precum şi în alte puncte ale oraşului se află staţii de Team-Taxi pe care le putem folosi în drumul spre casă, plătind frăţeşte pe fiecare segment de drum o sumă fixă pe care o pretinde şoferul maşinii (în funcţie de lungimea drumului şi nu în funcţie de numărul de pasageri).

În orice staţie pot părăsi gaşca numai cei care au ajuns la destinaţie, în acest caz grupurile omogene formate urmând să se despartă (pentru că au dispărut oamenii de legătură) şi să ia în continuare taxiuri cu diferite destinaţii. Două grupuri omogene diferite pot merge în aceeaşi destinaţie, dar utilizând taxiuri diferite.

Numim grup omogen o formaţie de persoane cu numere de ordine consecutive. De exemplu, pentru p=6p=6, de la discotecă porneşte gaşca în formaţia 1 2 3 4 5 61 \ 2 \ 3 \ 4 \ 5 \ 6. Dacă la o staţie se opreşte persoana numărul 33, atunci se formează două grupuri omogene, 1 21 \ 2 şi 4 5 64 \ 5 \ 6. Ei se despart luând două taxiuri diferite. Două grupe formate din 1 4 51 \ 4 \ 5 şi 2 62 \ 6 nu sunt omogene.

Atâta timp cât kk persoane merg cu un taxi pe un segment pe care orice şofer cere invariabil suma cc, contribuţia fiecăruia pe acel segment este c/kc/k. Dacă o persoană merge singură cu un taxi pe segmentul respectiv, ea va trebui să plătească singură întreaga sumă.

Cerinţă

Ştiind numărul de persoane, reţeaua de staţii de taxiuri, costurile de transport pe fiecare segment al reţelei şi punctele de destinaţie ale fiecărui membru al găştii, se cere să se determine costul minim pe care îl pot plăti în total membrii găştii astfel încât, utilizând taxiurile în maniera descrisă, fiecare să ajungă acasă.

Date de intrare

Din fişierul team.in se citesc:

  • pp numărul de persoane din gaşcă ce pleacă de la discotecă, de pe linia 11;
  • nn numărul de staţii de taxi din oraş, de pe linia 22; staţiile sunt numerotate de la 11 la nn;
  • mm numărul de segmente ce leagă direct câte două staţii, de pe linia 33;
  • mm triplete de forma ijci j c (ii şi jj sunt staţiile între care se consideră segmentul, iar cc costul de transport pe segmentul respectiv), de pe următoarele mm linii;
  • d1d2dpd_1 d_2 … d_p staţiile de destinaţie ale membrilor găştii (nu neapărat distincte), de pe ultima linie.

Date de ieşire

Fişierul team.out va conţine o singură linie cu un număr reprezentând costul minim determinat.

Restricții și precizări

  • 1p501 \leq p \leq 50
  • 2n5002 \leq n \leq 500
  • 1i,jn1 \leq i, j \leq n
  • 0c1 0000 \leq c \leq 1 \ 000
  • 1d1,d2,,dpn1 \leq d_1, d_2, …, d_p \leq n
  • Se consideră staţia 1 ca punct de plecare (discoteca).
  • Pe toate străzile se poate circula în ambele sensuri.
  • Pentru datele de test există întotdeauna soluţie.
  • Toate datele de intrare sunt numere naturale.

Exemplu

team.in

4 
5 
8 
1 2 6
1 3 4
3 4 8
2 4 1
3 5 7
2 3 1
1 5 6
2 5 0
5 2 4 4

team.out

6

Explicație

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