competitive_programming_lib/Algorithms/
bfs.rs

1use std::collections::VecDeque;
2
3pub fn bfs(graph: &Vec<Vec<usize>>, start: usize) -> Vec<usize> {
4    let mut visited = vec![false; graph.len()];
5    let mut queue = VecDeque::new();
6    let mut order = Vec::new();
7
8    visited[start] = true;
9    queue.push_back(start);
10
11    while let Some(node) = queue.pop_front() {
12        order.push(node);
13        for &neighbor in &graph[node] {
14            if !visited[neighbor] {
15                visited[neighbor] = true;
16                queue.push_back(neighbor);
17            }
18        }
19    }
20
21    order
22}