Для применении  алгоритма DFS удобнее всего использовать представление графа в виде списков смежности.
Списки смежности. В этом случае каждой вершине x сопоставляется список смежности, включающий вершины, соединенные с x ребром.
Списки смежности – самый популярный способ представления графов, они позволяют эффективно реализовать большинство алгоритмов.
Списки смежности удобно хранить в "списке списков" , который может быть представлен следующим образом:
словарь или список adj (adj[x]=  список/словарь, элементы которого есть описание ребер в смежные вершины :
	- вершина -  для невзвешенного графа 
- (вершина, вес) - для взвешенного граф
Списки смежности позволяют эффективно находить вершины, в которые можно перейти из данной по одному ребру.
Следующий цикл обходит все вершины, в которые можно попасть из вершины s:
for u in adj[s] :
    # обработать вершину u