просто помните, где вы были, и если вы пришли в тот же узел, все кончено.
Попробуйте сохранить записи в двоичном дереве, и у вас есть O (N * log (N)) время и O (N) пространственная сложность
EDIT
Вы можете использовать Log (N) пробел, если вы храните не все, а в экспоненциальном порядке. Это означает, что вы сохраняете 1-й, 2-й, 4-й, 8-й, 16-й, а затем, если вас ударили, вы должны продолжить с этой точки. Время сложность для этого N * Log (n) ^ 2