diff --git a/src/task-3/README.md b/src/task-3/README.md
index 55b48e08bbdb3319f8f9aadd1dc4175ff23e806f..8f4c9679bad3866dfa02f701d12f270db0c164fb 100644
--- a/src/task-3/README.md
+++ b/src/task-3/README.md
@@ -1,12 +1,10 @@
-# Task 2 - Depth first search
+## Task 3 - Depth first search
 
-În acest task veți implementa un algoritm cunoscut de la SDA de cautare pe grafuri, depth first search.
+Pentru ca Zoly să verifice că drumul pe care e transmis un pachet este legitim, se va realiza o cautare in topologia rețelei. Protocolul de comunicație garantează trimiterea pachetelor folosind algoritmul de căutare în adâncime. Astfel, știind sursa pachetului, putem găsi calea legitimă către toate celelalte gazde din rețea.
 
-*Note:* implementarea trebuie să fie recursivă, NU iterativă.
+În acest task veți implementa algoritmul cunoscut de la SDA de cautare pe grafuri, depth first search.
 
-Pentru acest task aveți de implementat funcția `dfs()` în fișierul `dfs.asm`.
-
-## Algoritmul dfs
+### Algoritmul dfs
 
 Precum sunteți deja familiari, depth first search implică cautare în adâncime pe grafuri, pornind de la un nod sursă dat. Algoritmul marchează nodul inițial ca fiind visitat și se aplică recursiv pe toți vecini lui. Algoritmul va continua, evitând nodurile marcate ca vizitate.
 
@@ -16,18 +14,18 @@ Luăm graful următor ca exemplu:
 
 Dacă nodul sursă este 1, atunci o posibilă cautare dfs ar fi urmatoarea:
 
-* Nodul 1 este vizitat.
-* Nodul 2 este vizitat.
-* Nodul 2 nu are vecini, ne ĂŽntoarcem la nodul 1.
-* Nodul 3 este vizitat.
-* Nodul 2 a fost deja vizitat, vizitam nodul 4.
-* Nodul 3 a fost deja vizitat, iar nodul 4 nu mai are vecini, deci ne ĂŽntoarcem la nodul 3.
-* Nodul 3 nu mai are vecini, ne ĂŽntoarcem la nodul 1.
-* Nodul 1 nu mai are vecini, se Încheie căutarea.
+- Nodul 1 este vizitat.
+- Nodul 2 este vizitat.
+- Nodul 2 nu are vecini, ne ĂŽntoarcem la nodul 1.
+- Nodul 3 este vizitat.
+- Nodul 2 a fost deja vizitat, vizitam nodul 4.
+- Nodul 3 a fost deja vizitat, iar nodul 4 nu mai are vecini, deci ne ĂŽntoarcem la nodul 3.
+- Nodul 3 nu mai are vecini, ne ĂŽntoarcem la nodul 1.
+- Nodul 1 nu mai are vecini, se Încheie căutarea.
 
-Dfs-ul poate avea mai multe căutari valide, în funcție de ordinea în care alegem să vizităm vecinii. În cazul nostru, Celelalte posibilități de căutare ar fi {1, 3, 2, 4} și {1, 3, 4, 2}.
+Dfs-ul poate avea mai multe căutari valide, în funcție de ordinea în care alegem să vizităm vecinii. În cazul nostru, celelalte posibilități de căutare ar fi {1, 3, 2, 4} și {1, 3, 4, 2}.
 
-## API
+### API
 
 În cadrul task-ului, nodurile sunt reprezentate sub forma unui id de tip `uint32_t` (unsigned int).
 Pentru a obține vecinii unui nod, se apelează funcția `expand` cu următoarea semnătură:
@@ -41,13 +39,13 @@ Aceasta returnează **adresa** unei structuri care conține vecinii nodului în
 ```x86asm
 struc neighbours_t
     .num_neighs resd 1  ; Numărul de vecini.
-    .neighs resd 1      ; Vectorul cu `num_neighs` vecini.
+    .neighs resd 1      ; Adresa vectorul cu `num_neighs` vecini.
 endstruc
 ```
 
-## Cerința
+### Cerința
 
-Vi se cere să implementați funcția `dfs()` din fișierul `dfs.asm`, care are următoarea semnătură:
+Vi se cere să implementați **recursiv** funcția `dfs()` din fișierul `dfs.asm`, care are următoarea semnătură:
 
 ```c
 void dfs(uint32_t node, neighbours_t *(*expand)(uint32_t node));
@@ -55,4 +53,11 @@ void dfs(uint32_t node, neighbours_t *(*expand)(uint32_t node));
 
 Aceasta primește ca parametru nodul sursă și adresa funcției `expand` și se cere să implementați algoritmul de dfs și să printați nodurile în momentul în care le viziați.
 
-Printarea se va realiza prin apelara funcției `printf`. Se depunctează folosirea macro-ului `PRINTF32`.
+Printarea se va realiza prin apelara funcției `printf`.
+
+### Depunctari
+
+| Descriere | Depunctare |
+| --- | --- |
+| Folosire macro PRINTF32 | -10p |
+| Soluție nerecursivă | -20p |