graph = {
'A': ['B', 'C'],
'B': ['D'],
'C': [],
'D': [],
'E': ['F'], # 'E' and 'F' are disconnected from 'A'
'F': []
}
source = 'A'
visited = set()
stack = [source]
print("DFS Traversal starting from node", source, ":")
while stack:
x = stack.pop()
if x not in visited:
visited.add(x)
print(x, end=" ")
# Reverse neighbors before pushing so they are popped in natural left-to-right order
for v in reversed(graph[x]):
if v not in visited:
stack.append(v)
Z3JhcGggPSB7CiAgICAnQSc6IFsnQicsICdDJ10sCiAgICAnQic6IFsnRCddLAogICAgJ0MnOiBbXSwKICAgICdEJzogW10sCiAgICAnRSc6IFsnRiddLCAjICdFJyBhbmQgJ0YnIGFyZSBkaXNjb25uZWN0ZWQgZnJvbSAnQScKICAgICdGJzogW10KfQoKc291cmNlID0gJ0EnCnZpc2l0ZWQgPSBzZXQoKQpzdGFjayA9IFtzb3VyY2VdCgpwcmludCgiREZTIFRyYXZlcnNhbCBzdGFydGluZyBmcm9tIG5vZGUiLCBzb3VyY2UsICI6IikKCndoaWxlIHN0YWNrOgogICAgeCA9IHN0YWNrLnBvcCgpCiAgICAKICAgIGlmIHggbm90IGluIHZpc2l0ZWQ6CiAgICAgICAgdmlzaXRlZC5hZGQoeCkKICAgICAgICBwcmludCh4LCBlbmQ9IiAiKQogICAgICAgIAogICAgICAgICMgUmV2ZXJzZSBuZWlnaGJvcnMgYmVmb3JlIHB1c2hpbmcgc28gdGhleSBhcmUgcG9wcGVkIGluIG5hdHVyYWwgbGVmdC10by1yaWdodCBvcmRlcgogICAgICAgIGZvciB2IGluIHJldmVyc2VkKGdyYXBoW3hdKToKICAgICAgICAgICAgaWYgdiBub3QgaW4gdmlzaXRlZDoKICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZCh2KQ==