Skip to content
Snippets Groups Projects
Commit 8d6ee5c0 authored by Martin Mareš's avatar Martin Mareš
Browse files

DFS

parent ba207aa2
No related branches found
No related tags found
No related merge requests found
#!/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)
#!/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)
9
11
1 2
1 3
1 4
3 5
3 6
4 7
6 8
8 9
2 9
7 9
6 7
#!/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))
9
8
1 2
1 3
1 4
3 5
3 6
4 7
6 8
8 9
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment