From e3c6e81716fa1a7c7bfcac7741337498f8eb12df Mon Sep 17 00:00:00 2001 From: Pushpak2861 Date: Mon, 20 Jan 2025 11:42:36 +0530 Subject: [PATCH 1/2] fixed sort --- sorts/topological_sort.py | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/sorts/topological_sort.py b/sorts/topological_sort.py index efce8165fcac..ad879f6794b2 100644 --- a/sorts/topological_sort.py +++ b/sorts/topological_sort.py @@ -14,28 +14,26 @@ } vertices: list[str] = ["a", "b", "c", "d", "e"] +class Topo: + def topo_sort(self): + visited = set() + stack = [] + def dfs(node): + visited.add(node) -def topological_sort(start: str, visited: list[str], sort: list[str]) -> list[str]: - """Perform topological sort on a directed acyclic graph.""" - current = start - # add current to visited - visited.append(current) - neighbors = edges[current] - for neighbor in neighbors: - # if neighbor not in visited, visit - if neighbor not in visited: - sort = topological_sort(neighbor, visited, sort) - # if all neighbors visited add current to sort - sort.append(current) - # if all vertices haven't been visited select a new one to visit - if len(visited) != len(vertices): - for vertice in vertices: - if vertice not in visited: - sort = topological_sort(vertice, visited, sort) - # return sort - return sort + for neighbor in edges[node]: + if neighbor not in visited: + dfs(neighbor) + + stack.append(node) + + return stack + + result = dfs("a") + return result[::-1] if __name__ == "__main__": - sort = topological_sort("a", [], []) + topo = Topo() + sort = topo.topo_sort() print(sort) From 7a2ee6eba2a8b3cb43df9ced3674f1e10b635c5f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 06:13:24 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- sorts/topological_sort.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sorts/topological_sort.py b/sorts/topological_sort.py index ad879f6794b2..773a0b312fc4 100644 --- a/sorts/topological_sort.py +++ b/sorts/topological_sort.py @@ -14,10 +14,12 @@ } vertices: list[str] = ["a", "b", "c", "d", "e"] + class Topo: def topo_sort(self): visited = set() stack = [] + def dfs(node): visited.add(node) @@ -26,9 +28,9 @@ def dfs(node): dfs(neighbor) stack.append(node) - + return stack - + result = dfs("a") return result[::-1]