diff --git a/10-dfs/dfs-strom.py b/10-dfs/dfs-strom.py
new file mode 100755
index 0000000000000000000000000000000000000000..92250189df1442c2b29b706f9a930c8db59feb6c
--- /dev/null
+++ b/10-dfs/dfs-strom.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python3
+# Prohledávání do hloubky ve stromu
+
+# Načteme vstup: počet vrcholů, počet hran, pak hrany
+n = int(input())
+m = int(input())
+sousede = [[] for _ in range(n)]
+for _ in range(m):
+    u, v = map(int, input().split())
+    u -= 1   # Na vstupu vrcholy číslujeme od 1 do n
+    v -= 1
+    sousede[u].append(v)
+    sousede[v].append(u)
+
+# Rekurzivní funkce pro prohledávání, předáváme si rodiče,
+# abychom do něj nešli znovu.
+def dfs(v, rodic=None):
+    # print('Enter:', v+1)
+
+    for s in sousede[v]:
+        if s != rodic:
+            dfs(s, v)
+
+    # print('Exit:', v+1)
+
+
+dfs(0)
diff --git a/10-dfs/dfs.py b/10-dfs/dfs.py
new file mode 100755
index 0000000000000000000000000000000000000000..e40d127ac9c287b793f9a858edfcae3f532e5708
--- /dev/null
+++ b/10-dfs/dfs.py
@@ -0,0 +1,28 @@
+#!/usr/bin/python3
+# Prohledávání do hloubky v obecném grafu.
+
+# Načteme vstup: počet vrcholů, počet hran, pak hrany
+n = int(input())
+m = int(input())
+sousede = [[] for _ in range(n)]
+for _ in range(m):
+    u, v = map(int, input().split())
+    u -= 1
+    v -= 1
+    sousede[u].append(v)
+    sousede[v].append(u)
+
+# Značíme si, kde už jsme byli
+znacka = [False]*n
+
+def dfs(v):
+    # print('Enter', v+1)
+    znacka[v] = True
+
+    for s in sousede[v]:
+        if not znacka[s]:
+            dfs(s)
+
+    # print('Exit', v+1)
+
+dfs(0)
diff --git a/10-dfs/graf.in b/10-dfs/graf.in
new file mode 100644
index 0000000000000000000000000000000000000000..a8da5c8fbd843280548658c55c8a070a529e29db
--- /dev/null
+++ b/10-dfs/graf.in
@@ -0,0 +1,13 @@
+9
+11
+1 2
+1 3
+1 4
+3 5
+3 6
+4 7
+6 8
+8 9
+2 9
+7 9
+6 7
diff --git a/10-dfs/hloubka-stromu.py b/10-dfs/hloubka-stromu.py
new file mode 100755
index 0000000000000000000000000000000000000000..254b1c7f6f81a6d6de6fed5d54fc4df6bbe447c6
--- /dev/null
+++ b/10-dfs/hloubka-stromu.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python3
+# Aplikace DFS na výpočet hloubky stromu.
+
+# Načteme vstup: počet vrcholů, počet hran, pak hrany
+n = int(input())
+m = int(input())
+sousede = [[] for _ in range(n)]
+for _ in range(m):
+    u, v = map(int, input().split())
+    u -= 1
+    v -= 1
+    sousede[u].append(v)
+    sousede[v].append(u)
+
+# Rekurzivní funkce, která spočítá hloubku podstromu
+# pod daným vrcholem.
+def hloubka(v, rodic=None):
+    h = 0
+    for s in sousede[v]:
+        if s != rodic:
+            h = max(h, hloubka(s, v) + 1)
+
+    return h
+
+print(hloubka(0))
diff --git a/10-dfs/strom.in b/10-dfs/strom.in
new file mode 100644
index 0000000000000000000000000000000000000000..106db0f244f2bd03cac7561001584e988cc00c5c
--- /dev/null
+++ b/10-dfs/strom.in
@@ -0,0 +1,10 @@
+9
+8
+1 2
+1 3
+1 4
+3 5
+3 6
+4 7
+6 8
+8 9