グラフのDFS(深さ優先探索)

use std::collections::HashMap;
use std::collections::VecDeque;


fn dfs(graph: HashMap<&str, Vec<&str>>, start: &str) {
   let mut visited: Vec<&str> = Vec::new();
   visited.push(start);

   for neighbor in graph.clone().get(start).unwrap() {
      if !visited.contains(&neighbor) {
         dfs(graph.clone(), neighbor);
      }
   }
}

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