69
правок
Изменения
Нет описания правки
== Алгоритм ==
=== Теория ===
{{Теорема
|statement=
Пусть существует удовлетворяющее условию обратное ребро <tex>(x, w)</tex>. Тогда <tex>(u, v)</tex> лежит на цикле <tex>x \rightsquigarrow v \rightarrow u \rightsquigarrow w \rightarrow x</tex> и не может быть мостом.
}}
==== Функция <tex>ret(v)</tex> ====
Определим функцию <tex>ret(v)</tex>, где <tex>v \in V</tex>, как минимум из следущих величин <br>
<tex>enter(v)</tex> <br>
Так как вершина <tex>u</tex> - потомок <tex>v</tex>, то обратное ребро из ее поддерева является обратным ребром из поддерева <tex>v</tex> <br>
}}
=== Псевдокод ===
'''dfs'''(<tex>v, p</tex>)
<tex> time \leftarrow time + 1</tex>
<tex>enter[v] \leftarrow time</tex>
<tex>ret[v] \leftarrow time </tex>
'''for''' всех <tex>u</tex> смежных с <tex>v</tex>
''if'' <tex>u = p</tex> '''continue'''