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

Zmije i lestve

MediumProblem #55
VremeMemorijaUlazIzlaz
1 s64 MBstdinstdout

Odluči koja su polja bezbedna pre nego što počneš da brojiš bacanja.

U igri "Zmije i lestve" igrač se kreće duž niza polja tako što baca kockicu i pomera se za onoliko polja koliko je pala. Neka polja su posebna:

  • ako stane na polje sa lestvama, penje se na više polje do kog one vode;
  • ako stane na polje sa zmijom, spušta se na niže polje do kog ona vodi.

Polje na koje ga prebace može i samo imati zmiju ili lestve, pa ga one nose dalje, i tako sve dok se ne zaustavi na polju na kom nema ni jedno ni drugo.

Ako se pritom ikada vrati na polje kroz koje je u tom nizu već prošao, upao je u petlju, istog trena gubi i do cilja više ne može. Takva polja mora da zaobiđe.

Odredi najmanji broj bacanja potreban da se od početnog polja stigne do završnog.

Ulaz

U prvoj liniji ulaza nalazi se ceo broj t - broj test primera.
U prvoj liniji svakog test primera su brojevi n, k i m - broj polja, najveći broj koji kockica može da pokaže i koliko ukupno ima zmija i lestvi. Polja su označena brojevima od 0 do n−1; igrač kreće sa polja 0, a završno polje je n−1. Kockica daje bilo koji broj od 1 do k, a bacanje koje bi igrača odnelo preko završnog polja nije dozvoljeno.
U narednih m linija nalaze se po dva broja u i v - zmija ili lestve sa polja u na polje v. Nijedno polje nema više od jedne, a ni početno ni završno polje nemaju nijednu.

Izlaz

Za svaki test primer ispiši u posebnoj liniji najmanji broj bacanja do završnog polja, ili −1 ako se do njega ne može stići.

Primer

Input
2
18 2 5
2 12
3 13
8 17
11 1
14 7
5 2 2
1 3
3 1
Output
3
2

U prvom test primeru igrač baci 2 i sa polja 0 dolazi na polje 2, odakle ga lestve dižu na 12. Novo bacanje 2 ga vodi na 14, gde ga zmija spušta na 7. Poslednje bacanje 1 ga stavlja na 8, a odatle ga lestve nose na polje 17 - cilj, u tri bacanja.

U drugom test primeru polja 1 i 3 pokazuju jedno na drugo, pa ko stane na bilo koje od njih odmah gubi. Igrač mora da ih preskoči: 0→2→4, u dva bacanja.

Ograničenja

1≤t≤1000
2≤n≤2000
1≤k≤n−1
0≤m≤n−2
0<u<n−1
0≤v≤n−1
u=v, i nijedno u se ne ponavlja
zbir svih n nije veći od 2⋅104


Zadatak je, uz dozvolu, preuzet iz zadatka Zmije i lestve, č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