#!/usr/bin/env python3 # -*- coding: utf-8 -*- # author: bt3gl from collections import deque class Graph: def __init__(self, edges, n): self.adj_list = [[] for _ in range(n)] for (src, dest) in edges: self.adj_list[src].append(dest) self.adj_list[dest].append(src) def bfs(graph, v, discovered): q = deque() discovered[v] = True q.append(v) while q: v = q.popleft() print(v, end=' ') for u in graph.adj_list[v]: if not discovered[u]: discovered[u] = True q.append(u) def recursive_bfs(graph, q, discovered): if not q: return v = q.popleft() print(v, end=' ') for u in graph.adj_list[v]: if not discovered[u]: discovered[u] = True q.append(u) recursive_bfs(graph, q, discovered)