[pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
This commit is contained in:
pre-commit-ci[bot] 2024-10-10 22:56:49 +00:00
parent f8a94a8b00
commit 0154a8a56a

View File

@ -17,20 +17,29 @@ def print_distance_and_paths(distance: list[float], paths: list[list[int]], src:
print(f"{vertex}\t\t{dist}\t\t\t\t{path_str}") print(f"{vertex}\t\t{dist}\t\t\t\t{path_str}")
def check_negative_cycle(graph: list[Edge], distance: list[float], predecessor: list[int]) -> bool: def check_negative_cycle(
graph: list[Edge], distance: list[float], predecessor: list[int]
) -> bool:
""" """
Checks if there is a negative weight cycle reachable from the source vertex. Checks if there is a negative weight cycle reachable from the source vertex.
If found, return True, indicating a negative cycle. If found, return True, indicating a negative cycle.
""" """
for edge in graph: for edge in graph:
if distance[edge.src] != float("inf") and distance[edge.src] + edge.weight < distance[edge.dst]: if (
distance[edge.src] != float("inf")
and distance[edge.src] + edge.weight < distance[edge.dst]
):
# Update predecessors to indicate a cycle for affected paths # Update predecessors to indicate a cycle for affected paths
predecessor[edge.dst] = -1 # Use -1 as a marker for negative cycle detection predecessor[
edge.dst
] = -1 # Use -1 as a marker for negative cycle detection
return True return True
return False return False
def reconstruct_paths(predecessor: list[int], vertex_count: int, src: int) -> list[list[int]]: def reconstruct_paths(
predecessor: list[int], vertex_count: int, src: int
) -> list[list[int]]:
""" """
Reconstructs the shortest paths from the source vertex to each vertex using the predecessor list. Reconstructs the shortest paths from the source vertex to each vertex using the predecessor list.
""" """
@ -50,7 +59,9 @@ def reconstruct_paths(predecessor: list[int], vertex_count: int, src: int) -> li
return paths return paths
def bellman_ford(graph: list[Edge], vertex_count: int, src: int) -> tuple[list[float], list[list[int]]]: def bellman_ford(
graph: list[Edge], vertex_count: int, src: int
) -> tuple[list[float], list[list[int]]]:
""" """
Returns the shortest paths from a vertex src to all other vertices, including path reconstruction. Returns the shortest paths from a vertex src to all other vertices, including path reconstruction.
""" """
@ -61,7 +72,10 @@ def bellman_ford(graph: list[Edge], vertex_count: int, src: int) -> tuple[list[f
# Step 1: Relax edges repeatedly # Step 1: Relax edges repeatedly
for _ in range(vertex_count - 1): for _ in range(vertex_count - 1):
for edge in graph: for edge in graph:
if distance[edge.src] != float("inf") and distance[edge.src] + edge.weight < distance[edge.dst]: if (
distance[edge.src] != float("inf")
and distance[edge.src] + edge.weight < distance[edge.dst]
):
distance[edge.dst] = distance[edge.src] + edge.weight distance[edge.dst] = distance[edge.src] + edge.weight
predecessor[edge.dst] = edge.src predecessor[edge.dst] = edge.src
@ -88,7 +102,9 @@ if __name__ == "__main__":
for i in range(E): for i in range(E):
print(f"Edge {i + 1}") print(f"Edge {i + 1}")
src, dest, weight = map(int, input("Enter source, destination, weight: ").strip().split()) src, dest, weight = map(
int, input("Enter source, destination, weight: ").strip().split()
)
if src < 0 or src >= V or dest < 0 or dest >= V: if src < 0 or src >= V or dest < 0 or dest >= V:
print(f"Invalid vertices: src and dest should be between 0 and {V - 1}") print(f"Invalid vertices: src and dest should be between 0 and {V - 1}")
continue continue