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 Bitmaskama
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

Kašnjenje signala

EasyProblem #68
VremeMemorijaUlazIzlaz
1 s64 MBstdinstdout

Kanali su jednosmerni. A signal je stigao svuda tek kad ga primi i poslednji računar.

Signal kreće sa jednog računara u mreži i širi se komunikacionim kanalima do svakog drugog računara do kog može da stigne, neposredno ili preko drugih računara. Svaki kanal je jednosmeran i signalu treba poznato vreme da ga pređe.

Svaki računar prosleđuje signal dalje čim ga primi, pa do svakog računara signal stiže onim putem kojim najranije može. Mreža je gotova kad signal primi i poslednji računar.

Napiši program koji određuje koliko je vremena potrebno da signal stigne do svih računara u mreži.

Ulaz

U prvoj liniji ulaza je jedan ceo broj t - broj test primera.
U prvoj liniji svakog test primera su dva cela broja n i m - broj računara i broj kanala.
U svakoj od sledećih m linija su tri cela broja u, v i w - kanal koji vodi od računara u do računara v, a signalu treba w vremena da ga pređe. Taj kanal ne nosi signal od v do u.
U poslednjoj liniji test primera je jedan ceo broj s - računar sa kog signal kreće.

Računari su označeni brojevima od 1 do n. Između istog para računara može postojati više kanala, a kanal može voditi i sa računara na samog sebe.

Izlaz

Za svaki test primer ispiši u posebnoj liniji vreme koje je signalu potrebno da stigne do svih računara, ili −1 ako do nekog računara uopšte ne može da stigne.

Primer

Input
3
5 7
1 2 7
1 3 3
1 5 6
2 1 2
3 5 2
4 2 3
5 4 1
1
3 1
1 2 5
1
1 1
1 1 4
1
Output
7
-1
0

U prvom test primeru signal stiže do računara 3 za 3, a do računara 5 za 5 - put 1→3→5 je bolji od direktnog kanala, koji košta 6. Odatle se do računara 4 stiže za 6, a do računara 2 za 7, direktnim kanalom, jer bi put preko 3,5,4 koštao 9. Poslednji stiže u trenutku 7.

U drugom test primeru do računara 3 ne vodi ništa, pa je rešenje −1. U trećem signal kreće sa jedinog računara i već je tu, pa mu ne treba nimalo vremena.

Ograničenja

1≤t≤10
1≤n≤1000
1≤m≤105
1≤u,v≤n i 1≤s≤n
1≤w≤1000
Zbir n preko svih test primera ne prelazi 5000, a zbir m ne prelazi 2⋅105


Zadatak je, uz dozvolu, preuzet iz zadatka Kašnjenje signala, čiji su autori Društvo matematičara Srbije i Fondacija Petlja.

Pošalji svoje rešenje

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

Prijavi se