Ну элементарно же!
Везде, во всех циклах и аргументах фукнций, вместо константных ссылок передавай по значению и будет тебе копирование массивов.
Везде вместо [] используй at() - в нём есть проверка границ, очень чутка медленнее работает, чем [].
" if (!visited[w])" убери проверку и всегда путь ищи, это прям радикально замедлит.
Там же не path модифицируй, а на каждой итерации создавай копию и, если pop_back не требуется, то копируй временный путь в path.