BFS(Breadth-First Search) with python

BFS&DFS are probably one of the most frequent and important types of questions in various interviews and coding tests. Iโ€™ve also encountered this type every time through several coding tests so far.

In this post, I would like to post about the BFS (Breadth-First Search) algorithm. I try to make it as simple as possible with Python, so I hope it helps a lot of people!๐Ÿ™

BFS (Breadth-First Search) algorithm

from collections import deque


def bfs(graph, start, visited):
    q = deque([start])
    visited[start] = True
    # 1. Basic
    while q:
        v = q.popleft()
        for i in graph[v]:
            if not visited[i]:
                q.append(i)
                visited[i] = True

    # 2. Check by distance
    dist = 0
    while q:
        dist += 1
        # You can check the client by dist by hanging the for statement 
        # inside the while statement in this way.
        for _ in range(len(q)):
            x, y = q.popleft()
            for i in range(4):
                nx, ny = x+dx[i], y+dy[i]
                if 0 <= nx < N and 0 <= ny < N and (visited[nx][ny] == False) and B[nx][ny] != 1:
                    q.append((nx, ny))
                    visited[nx][ny] = True
                    if B[nx][ny] == -1:
                        heapq.heappush(client_pq, (nx, ny, dist))

This post is part of Python-Team-Notes for coding test posting that I posted. If you have any questions or mistakes regarding the code, please point it out!

Leave a comment