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

Autobuske rute

MediumProblem #53
VremeMemorijaUlazIzlaz
1 s64 MBstdinstdout

Spajanje svakog para stanica sa iste linije daje previše parova. Prebroj koliko.

Poznate su autobuske linije jednog grada. Svaka linija je spisak stanica, a autobusi voze u oba smera - kada jednom uđeš u autobus, možeš da izađeš na bilo kojoj drugoj stanici te linije. Jedno takvo putovanje jednim autobusom zovemo vožnja, a presedanje u drugi autobus započinje novu.

Odredi najmanji broj vožnji potreban da se od zadate početne stigne do zadate krajnje stanice.

Ulaz

U prvoj liniji ulaza nalazi se ceo broj t - broj test primera.
U prvoj liniji svakog test primera su brojevi s i n - koliko grad ima stanica i koliko autobuskih linija. Stanice su označene brojevima od 1 do s.
U narednih n linija opisana je po jedna autobuska linija: prvo broj m stanica na njenoj ruti, a zatim m različitih brojeva stanica.
U poslednjoj liniji test primera su brojevi a i b - početna i krajnja stanica.

Izlaz

Za svaki test primer ispiši u posebnoj liniji najmanji broj vožnji od stanice a do stanice b. Ako se do nje ne može stići, ispiši −1. Ako su a i b ista stanica, odgovor je 0, jer nikuda ne treba ni ići.

Primer

Input
1
7 2
3 1 2 7
3 3 6 7
1 6
Output
2

Uđi u prvi autobus na stanici 1 i vozi se do stanice 7, pa presedni u drugi autobus koji te odvozi do stanice 6. Dve vožnje, a jednom ne može - nijedna linija ne sadrži i stanicu 1 i stanicu 6.

Ograničenja

1≤t≤1000
1≤s≤105
1≤n≤105
1≤m
1≤a,b≤s
stanice jedne autobuske linije međusobno su različite
zbir svih s nije veći od 2⋅105
zbir svih m nije veći od 2⋅105


Zadatak je, uz dozvolu, preuzet iz zadatka Autobuske rute, č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