Graphs are useful tools for modeling problems and consist of vertices and edges. Breadth-first search (BFS) is an algorithm that visits the vertices of a graph starting from a source vertex and proceeding to visit neighboring vertices first, before moving to neighbors that are further away. BFS uses a queue to efficiently traverse the graph and discover all possible paths from the source to other vertices, identifying the shortest paths in an unweighted graph. The time complexity of BFS on an adjacency list representation is O(n+m) where n is the number of vertices and m is the number of edges.