Эта интересная задача, для тех кто не обладает знаниями решения подобных задач, покажется просто невообразимой.
Сразу отмечу, что задача на самом деле не сложная и легко автоматизируется. Такое приложение как yandex.навигатор решает подобные задачи тысячами за час(надо отдать должное разработчикам за внедрение такой идеи как учет пробок)
Маршруты и расстояния
Пояснения к маршрутам
1 - (синий пунктир) этими маршрутами можно пользоваться только в светлое время суток.(как дополнительное условие)
2 -(желтый) эти маршруты имеют одинаковое время проезда в обе стороны
3 - (зеленый) эти маршруты от старшей буквы (например А) имеют обычное расстояние, а от младшей буква (Я) имеют расстояние в два раза больше. Пример ГЁ - 6 расстояние, ЁГ - 12 расстояние
4 - (красный) Эти маршруты как и зеленые, только наоборот. АД - 12, ДА -6
Точки Л и М, плавающие, это значит, что каждый раз расстояние от Л до ближайшей точки, а это может быть одна из точек, А, В или Д меняется от 2 до 10. Для М - аналогично, только другие точки и расстояния.
Можно, конечно, еще добавить условий, для реальности задачи, например запас топлива в баке, наличие заправок на маршруте, ремонт дорог и так далее.
В чем состоит задача:
1 - найти кратчайшее расстояние от точка А до точки Б
2 - Найти кратчайшее расстояние по Маршруту Б - М - А
3 - Найти кратчайший маршрут по точкам Л - А- Б - М
4 - Найти кратчайший маршрут по точкам Л - Д - М - Л
Все цифры для примера. Главная задача составить план решения. Главное понятные пункты, что за чем решать и какие методы использовать.
Ответы в комментариях.