+ directed graph dfs