Как именно - нужно не просто найти кратчайшие пути из одной вершины в другую - ты все равно уходишь от объяснения алгоритма выбора монет по кратчайшим расстояниям между которыми ты будешь делать обход
Я думал построить минимальное остовое дерево с помощью алгоритма Крускала - и потом на нем сделать обход в глубину, но не думаю что это самое оптимальное решение.
Смотри какая тема - есть лабиринт с монетками как оптимально обойти его за минимальное число шагов(лабиринт - не дерево!) - точка старта - зафиксирована