use std::collections::HashMap; use std::collections::VecDeque; fn bfs(graph: HashMap<&str, Vec<&str>>, start: &str) { let mut deque: VecDeque<&str> = VecDeque::new(); let mut visited: Vec<&str> = Vec::new(); deque.push_back(start); while !deque.is_empty() { let vertex = deque.pop_front().unwrap(); if !visited.contains(&vertex) { visited.push(vertex); if graph.get(vertex) != None { let vs = graph.get(vertex).unwrap(); for v in vs { // println!("{}", v); deque.push_back(v); } } } } } fn main() { let mut graph: HashMap<&str, Vec<&str>> = HashMap::new(); graph.insert("A", vec!["B", "C"]); graph.insert("B", vec!["A", "D", "E"]); graph.insert("C", vec!["A", "F"]); graph.insert("D", vec!["B"]); graph.insert("E", vec!["B", "F"]); graph.insert("F", vec!["C", "E"]); println!("{:?}", graph); bfs(graph, "A"); }

