Commit 8d6ee5c0 authored by Martin Mareš's avatar Martin Mareš
Browse files

DFS

parent ba207aa2
#!/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
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment