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

Redosled poslova

EasyProblem #66
VremeMemorijaUlazIzlaz
0.5 s64 MBstdinstdout

Pažljivo pročitaj smer svakog para, i pazi na koji posao strelica treba da pokazuje.

Da bi se sklopio automobil, treba obaviti čitav spisak poslova, a neki od njih zavise od drugih - osovine moraju da se ugrade pre točkova. Tvoj zadatak je da nađeš redosled u kom se svih n poslova može obaviti, a da nijedan posao ne krene pre onoga od koga zavisi.

Poslovi su označeni brojevima od 0 do n−1. Obično je moguće više redosleda, pa ispiši leksikografski najmanji: od svih ispravnih redosleda onaj kome je prvi broj najmanji, a među njima onaj kome je drugi broj najmanji, i tako dalje.

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 poslova i broj zavisnosti.
U svakoj od sledećih m linija su dva cela broja x i y, što znači da posao y mora da se obavi pre posla x. Obrati pažnju na redosled: posao koji je u liniji drugi je onaj koji ide prvi.

Garantuje se da redosled postoji.

Izlaz

Za svaki test primer ispiši u posebnoj liniji svih n brojeva poslova u leksikografski najmanjem ispravnom redosledu, razdvojene sa po jednim razmakom.

Primer

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

Samo poslovi 2 i 5 nemaju ništa pre sebe, a 2 je manji, pa ide prvi. Time se ništa novo ne oslobađa, pa sledi 5, koji oslobađa i 0 i 4 - a 0 je manji. Posao 4 mora da čeka da se završe i 2 i 5, a posao 3 da se završe 1 i 2.

Ograničenja

1≤t≤10
2≤n≤5⋅104
1≤m≤10n
0≤x,y≤n−1 i x=y
Zbir n preko svih test primera ne prelazi 105, a zbir m ne prelazi 2⋅105


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