Artamonova A
я бы копнула в сторону того, чтобы давать спорным позициям меньший приоритет в поиске пути - они проходимы, но клетка проходится не за 1 ход, а за 2
это должно решить проблему с коллизиями пар юнитов, и далее можно накапливать стоимость прохода по таким "перекресткам"
в "поиске пути" первой подзадачи с поисками конечных целей-работ я ровно так и сделал, получилось идеально. но во второй подзадаче нет поиска пути, есть только венгерский алгоритм