[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:19:44 +00:00
parent 2b50d97d3e
commit 40e312af1b

View File

@ -14,20 +14,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.
""" """
@ -47,7 +56,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.
""" """
@ -58,7 +69,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
@ -75,6 +89,7 @@ def bellman_ford(graph: List[Edge], vertex_count: int, src: int) -> Tuple[List[f
if __name__ == "__main__": if __name__ == "__main__":
# Example graph input for testing purposes # Example graph input for testing purposes
import doctest import doctest
doctest.testmod() doctest.testmod()
try: try:
@ -85,7 +100,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