mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-24 13:31:07 +00:00
455509acee
* add topological sort * fix topological sort? * running black * renaming file
48 lines
873 B
Python
48 lines
873 B
Python
# Author: Phyllipe Bezerra (https://github.com/pmba)
|
|
|
|
clothes = {
|
|
0: "underwear",
|
|
1: "pants",
|
|
2: "belt",
|
|
3: "suit",
|
|
4: "shoe",
|
|
5: "socks",
|
|
6: "shirt",
|
|
7: "tie",
|
|
8: "clock",
|
|
}
|
|
|
|
graph = [[1, 4], [2, 4], [3], [], [], [4], [2, 7], [3], []]
|
|
|
|
visited = [0 for x in range(len(graph))]
|
|
stack = []
|
|
|
|
|
|
def print_stack(stack, clothes):
|
|
order = 1
|
|
while stack:
|
|
cur_clothe = stack.pop()
|
|
print(order, clothes[cur_clothe])
|
|
order += 1
|
|
|
|
|
|
def dfs(u, visited, graph):
|
|
visited[u] = 1
|
|
for v in graph[u]:
|
|
if not visited[v]:
|
|
dfs(v, visited, graph)
|
|
|
|
stack.append(u)
|
|
|
|
|
|
def top_sort(graph, visited):
|
|
for v in range(len(graph)):
|
|
if not visited[v]:
|
|
dfs(v, visited, graph)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
top_sort(graph, visited)
|
|
print(stack)
|
|
print_stack(stack, clothes)
|