Sunteți pe pagina 1din 1

Liceul Teoretic de Informatic Grigore Moisil Iai

CONCURS NAIONAL DE INFORMATIC


Clasa a IX- a
Problema 1 drum
Autor: tefan Negru
Descrierea soluiei (tefan Negru)
Soluie 100 puncte O(N*M)
Iniial, matricea din enun va conine numai valori de 0. Pe msur ce citim poziiile pe care se afl densitile,
completm matricea astfel:
n primul rnd, decodificm poziia pentru a obine linia x i coloana y pe care trebuie asezat densitatea. n loc s
punem n matrice valoarea citit, vom plasa una din valorile {1,2,3} cu semnificaia:
Mat[x][y]=1 exist drum de la locaia [x][y] la linia 1
Mat[x][y]=2 exist drum de la locaia [x][y] la linia N
Mat[x][y]=3 nu am descoperit nc dac exist drum de la locaia [x][y] la linia 1sau la linia N
Dac x=1 atunci Mat[x][y]=1
Dac x=N atunci Mat[x][y]=2
Dac nu suntem in primele 2 cazuri atunci Mat[x][y]=3
Dac n urma acestor adaugri n matrice se creeaz una dintre situaiile:
Mat[x][y]=1 i unul din vecini are valoarea 2 sau
Mat[x][y]=2 i unul din vecini are valoarea 1 sau
Mat[x][y] are att un vecin 1 ct i un vecin 2,
nsemn c am aflat rspunsul. Oricare dintre aceste 3 situaii reprezint faptul c din locaia [x][y] exist drum
att la linia 1 ct i la linia N, deci am gsit un drum de la la linia 1 la linia N. Prin urmare, afim densitatea
corespunzatoare liniei de pe care tocmai am citit (densitile sunt considerate in ordine cresctoare).
Altfel, actualizm matricea astfel:
Dac n matrice exist o valoare 3 vecin cu o valoare 1, punem in loc de 3, valoarea 1.
Dac n matrice exist o valoare 3 vecin cu o valoare 2, punem in loc de 3, valoarea 2.
Dac n locaia [x][y] am plasat valoarea 1 sau valoarea 2, nlocuim valorile 3 din vecintate cu marcajul
Mat[x][y], continund cu vecinii vecinilor, ct timp acest lucru este posibil.

S-ar putea să vă placă și