Задачи Javascript

Поиск пути по билетам

Задача — восстановить маршрут из списка пар "из → в", начиная с указанного города.

const paths = [{
  from: 'Vladimir',
  to: 'Nizhny Novgorod',
}, {
  from: 'Moscow',
  to: 'Vladimir'
}, {
  from: 'Yekaterinburg',
  to: 'Novosibirsk',
}, {
  from: 'Nizhny Novgorod',
  to: 'Kazan',
}, {
  from: 'Kazan',
  to: 'Yekaterinburg',
}];

const getRoute = (paths, start) => ...

/*
Вывод:

"Moscow" => [
  "Moscow",
  "Vladimir",
  "Nizhny Novgorod",
  "Kazan",
  "Yekaterinburg",
  "Novosibirsk",
]

"Kazan" => [
  "Kazan", 
  "Yekaterinburg", 
  "Novosibirsk",
]
*/

const getRoute = (paths, start) => {
  const map = new Map();
  
  for (const { from, to } of paths) {
    map.set(from, to);
  }
  
  const route = [start];
  
  while (map.has(start)) {
    start = map.get(start);
    route.push(start);
  }
  
  return route;
};