OneCompiler

DFS BFS

96

from collections import defaultdict, deque

class Graph:
def init(self):
self.graph = defaultdict(list)

def add_edge(self, u, v):
    self.graph[u].append(v)
    self.graph[v].append(u) 

def dfs(self, v, visited=None):
    if visited is None:
        visited = set()
    visited.add(v)
    print(v, end=' ')
    for neighbor in self.graph[v]:
        if neighbor not in visited:
            self.dfs(neighbor, visited)

def bfs(self, start):
    visited = set()
    queue = deque([start])
    while queue:
        vertex = queue.popleft()
        if vertex not in visited:
            print(vertex, end=' ')
            visited.add(vertex)
            queue.extend([n for n in self.graph[vertex] if n not in visited])

g = Graph()
num_edges = int(input("Enter number of edges: "))
print("Enter edges (u v):")
for _ in range(num_edges):
u, v = map(int, input().split())
g.add_edge(u, v)

start_vertex = int(input("Enter starting vertex for DFS and BFS: "))

print("\nDFS:")
g.dfs(start_vertex)

print("\nBFS:")
g.bfs(start_vertex)