mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-12-19 01:30:16 +00:00
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)
|