Advertisement
Guest User

Untitled

a guest
Mar 28th, 2020
384
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. public ArrayList<String> BFS(String origin, String dest) {
  2.  
  3. Queue<CityNode> queue = new LinkedList<CityNode>();
  4.  
  5. Map<CityNode, CityNode> nodes = new HashMap<>();
  6.  
  7.  
  8. CityNode cityOrigin = cities.get(origin);
  9. CityNode cityDest = cities.get(dest);
  10. ArrayList<CityNode> visitedCities = new ArrayList<CityNode>();
  11.  
  12.  
  13. queue.offer(cityOrigin);
  14. nodes.put(cityOrigin, null);
  15. visitedCities.add(cityOrigin);
  16. boolean found = false;
  17. while (!queue.isEmpty()) {
  18.  
  19. CityNode node = queue.poll();
  20.  
  21.  
  22. if (node == cityDest) {
  23. found = true;
  24. break;
  25. }
  26.  
  27.  
  28. for (int i = 0; i < node.connected.size(); i++) {
  29. CityNode c = node.connected.get(i);
  30. if (!visitedCities.contains(c)) {
  31. queue.offer(c);
  32. visitedCities.add(c);
  33. nodes.put(c, node);
  34. }
  35. }
  36. }
  37.  
  38.  
  39. if (found) {
  40.  
  41. ArrayList<String> path = new ArrayList<String>();
  42. CityNode curr = cityDest;
  43. while (curr != null) {
  44. path.add(0, curr.name);
  45. curr = nodes.get(curr); //This returns the predecessor of the current CityNode
  46. }
  47. return path;
  48. } else
  49. return null;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement