competitive_programming_lib/Algorithms/
bfs.rs1use 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}