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");
}