LearnToCP
Prijavi se
Navigacija
PočetnaRoad-mapaProblemiO Nama
Teorija
Takmičarsko Znanje
Izbor Radnog Okruženja (IDE)Interaktivni ZadaciOutput-only Zadaci
Osnove
Tvoj Prvi ProgramTipovi podataka, Unos i IzlazC++ sintaksaModuloFunkcijeVektoriMatriceVremenska Složenost Algoritma
Sortiranje
SortiranjeSortiranje PrebrojavanjemRadix Sort
Tehnike Optimizacije
Dva PokazivačaZbir brojeva od 1 do nZbir PrefiksaBinarna PretragaPohlepni AlgoritmiFunkcije Binarne PretrageBinarna Pretraga po RešenjuPodeli, pa Vladaj
Binarni Brojevi
Binarni BrojeviBrojevi u koduOperacije nad BitovimaBitmaske
Matematika
Binarno StepenovanjeProsti BrojeviRastavljanje na proste činioceNZD i NZSEratostenovo SitoModifikovano Sito
Strukture Podataka
Niske (Stringovi)StekRedMapeSkupovi (Set)Red sa PrioritetomKorišćenje Proizvoljnih KriterijumaSegmentna StablaFenvikova StablaSparse TabeleDisjunktni SkupoviSqrt Dekompozicija
Kombinatorika
Pravilo SabiranjaPravilo MnoženjaKombinatorni ObjektiPrincip Uključenja Isključenja
Geometrija
Osnove GeometrijeVektoriVektorski i Skalarni ProizvodLinijePoligoniUgloviTačka u PoligonuRastojanja i Tačke PresekaKonveksni OmotačKrugovi
Rekurzija
PokazivačiRekurzijaGenerisanje Kombinatornih Objekata
Dinamičko Programiranje
O DP-uDP problemiDP nad StablimaDP nad BitmaskamaDP nad brojevima
Teorija Grafova
GrafoviDFS i BFSNajkraći PuteviStablaTopološko SortiranjeDajkstrin AlgoritamMinimalna Razapinjuća StablaAlgoritmi Najkraćih Puteva
Napredna Teorija Grafova
Dvostruka PovezanostJako Povezane KomponenteBipartitni GrafMaksimalni Protok u GrafuFord-Fulkersonov AlgoritamDualnost Protoka i Minimalnog PresekaTeško-Laka DekompozicijaCentroidna Dekompozicija
Napredne Strukture Podataka
2D i 3D Segmentna StablaLenjo PropagiranjeImplicitna Segmentna StablaPerzistentna Segmentna StablaNajbliži Zajednički PredakTrieBalansirana Binarna Stabla PretrageMoov Algoritam

Degustacioni meni

MediumProblem #71
VremeMemorijaUlazIzlaz
2 s128 MBstdinstdout

Bonus zavisi od toga koje je jelo bilo neposredno pre, pa skup pojedenih jela sam po sebi nije dovoljan.

Restoran nudi meni od n jela, a ti si odlučio da naručiš tačno m različitih. Jelo i ti samo po sebi donosi ai​ jedinica uživanja.

Neka jela se ipak bolje slažu u određenom redosledu. Kuvar je zapisao k sparivanja: sparivanje x,y,c znači da, ako jelo y pojedeš neposredno posle jela x, bez ičega između, dobijaš još c jedinica povrh toga. Sparivanje važi samo u smeru u kom je zapisano.

Svojih m jela možeš da pojedeš bilo kojim redosledom. Odredi najveće ukupno uživanje koje možeš da postigneš.

Ulaz

U prvoj liniji ulaza je jedan ceo broj t - broj test primera.
U prvoj liniji svakog test primera su tri cela broja n, m i k - broj jela na meniju, broj jela koja ćeš naručiti i broj sparivanja.
U drugoj liniji je n celih brojeva a1​,a2​,…,an​ - uživanje koje svako jelo donosi samo po sebi.
U svakoj od sledećih k linija su tri cela broja x, y i c - jelo y pojedeno neposredno posle jela x donosi c dodatnog uživanja.

Jela su označena brojevima od 1 do n. Nijedno sparivanje (x,y) nije navedeno dvaput.

Izlaz

Za svaki test primer ispiši u posebnoj liniji najveće ukupno uživanje.

Primer

Input
2
2 2 1
1 1
2 1 1
4 3 2
1 2 3 4
2 1 5
3 4 2
Output
3
12

U prvom test primeru pojedi jelo 2 pa jelo 1: po jedna jedinica od svakog jela, plus još jedna za sparivanje. U drugom, redosled 4,2,1 daje 4+2+1=7 od samih jela, a sparivanje 2→1 dodaje 5 - redosled 2,1,4 nosi istih 12.

Ograničenja

1≤t≤5
1≤m≤n≤18
0≤k≤n⋅(n−1)
0≤ai​≤109
1≤x,y≤n i x=y, a 0≤c≤109


Zadatak je nastao po uzoru na Kefa and Dishes, zadatak 580D sa Codeforces Round 321, autora Mike Mirzayanov i tima Codeforces. Postavka je naša.

Pošalji svoje rešenje

Prijavi se da pošalješ rešenje i pratiš svoj napredak.

Prijavi se