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

Prvi put kroz matricu

MediumProblem #75
VremeMemorijaUlazIzlaz
1 s64 MBstdinstdout

Polja se samo dodaju, nikad ne uklanjaju - a pitanje se postavlja posle svakog od njih.

Matrica dimenzija n×n na početku je puna nula. Zatim se u nju upisuju jedinice, jedna po jedna i zadatim redosledom.

Kroz matricu se krećeš tako što prelaziš sa polja na polje na kojem stoji jedinica, i to samo gore, dole, levo i desno - nikada dijagonalno. Preći matricu znači krenuti sa bilo kog polja prve vrste i tim kretanjem stići do bilo kog polja poslednje vrste.

Posle svake upisane jedinice matrica može, ali ne mora, biti prohodna. Odredi koliko jedinica treba upisati da bi matrica prvi put postala prohodna.

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 - stranica matrice i broj jedinica koje će biti upisane.
U svakoj od sledećih m linija su dva cela broja r i c - vrsta i kolona sledeće jedinice, pri čemu se obe broje od 0.

Nijedno polje nije navedeno dvaput.

Izlaz

Za svaki test primer ispiši u posebnoj liniji koliko je jedinica bilo upisano kada je matrica prvi put postala prohodna, ili −1 ako nikada ne postane prohodna.

Primer

Input
3
4 9
0 0
0 1
1 1
3 3
1 3
2 0
3 0
2 1
2 2
1 1
0 0
3 2
0 0
2 2
Output
8
1
-1

Posle osme jedinice prva matrica izgleda ovako, a označena polja vode od prve vrste do poslednje:

1100
0101
1100
1001

U drugom test primeru matrica ima samo jedno polje, koje je istovremeno i prva i poslednja vrsta, pa je dovoljan jedan upis. U trećem test primeru dve jedinice stoje u suprotnim uglovima i nikada se ne dodirnu.

Ograničenja

1≤t≤10
1≤n≤200
1≤m≤n2
0≤r,c≤n−1
Zbir svih m po test primerima najviše je 105


Zadatak je, uz dozvolu, preuzet iz zadatka Prvi put kroz matricu, č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