Предполагая, что это двунаправленный, вы можете просто начать с места назначения и продолжить свой путь наружу.Это обычно называется поиском по ширине (BFS).
Все, что связано с dest, имеет расстояние 1. Любое, связывающееся с любым из этих узлов (которые еще не подсчитаны), имеет расстояние 2.Повторяйте, пока не выйдете из узлов.
Даже если бы он не был двунаправленным, вы все равно могли бы сделать это довольно легко, «подделав» его двунаправленность с помощью одного прохода через узлы для начала.
В любом случае это порядок (V + E), где V - это количество узлов, а E - количество ребер.