def topological(graph,start,path=[]):
q = [start]
while q:
v = q.pop(0)
if v not in path:
path += [v]
q = q + graph[v]
return path
graph = {
'a' : ['1','2','3','5'],#for 0 index
'1' : ['4'],
'2' : ['4'],
'3' : ['4'],
'4': ['6','8'],
'5' : ['6'],
'6' : ['7'],
'7' : ['9'],
'8' : ['9'],
'9' : []
}
sort = (topological(graph, 'a'))
print(sort)
ZGVmIHRvcG9sb2dpY2FsKGdyYXBoLHN0YXJ0LHBhdGg9W10pOgogICAgcSA9IFtzdGFydF0KICAgIHdoaWxlIHE6CiAgICAgICAgdiA9IHEucG9wKDApCiAgICAgICAgaWYgdiBub3QgaW4gcGF0aDoKICAgICAgICAgICAgcGF0aCArPSBbdl0KICAgICAgICAgICAgcSA9IHEgKyBncmFwaFt2XQogICAgICAgICAgIAogICAgcmV0dXJuIHBhdGgKICAgCmdyYXBoID0gewogICAgJ2EnIDogWycxJywnMicsJzMnLCc1J10sI2ZvciAwIGluZGV4CiAgICAnMScgOiBbJzQnXSwKICAgICcyJyA6IFsnNCddLAogICAgJzMnIDogWyc0J10sCiAgICAnNCc6ICBbJzYnLCc4J10sCiAgICAnNScgOiBbJzYnXSwKICAgICc2JyA6IFsnNyddLAogICAKICAgICc3JyA6IFsnOSddLAogICAgJzgnIDogWyc5J10sCiAgIAogICAgJzknIDogW10KfQpzb3J0ID0gKHRvcG9sb2dpY2FsKGdyYXBoLCAnYScpKQpwcmludChzb3J0KQoK
['a', '1', '2', '3', '5', '4', '6', '8', '7', '9']