sabakka>> O(1) по памяти означает, что объём используемой алгоритмом доп.памяти не должен зависеть от NUM_VERTICES. Mishka> У тебя просто представление исходных данных уже не будет, как О(1) в твоём понимании. Поскольку исходные данные. Не будет. Требование O(1) относится только к доп. памяти.
Mishka> Когда учили, то у нас О(1) было именно статическое размещение (хотя эта метрика официальной не была). Этого не может быть.
Mishka> Потому, я думаю, что рекурсия запрещена, т.к. это неявное размещение динамическое на стеке. А тут получается, что рекурсия сама по себе будет нарушать требование O(1) по памяти.
Mishka> Поэтому и можно всё дефайнером определить. Это нарушение условий задачи.
Mishka> Ты говоришь про вектор достижимости. Понятно, что для одного элемента, это строка/столбец из матрицы достижимости. В твоём понимании, О(1) не получится, если только не гадить в исходные данные. Гадить можно, но нужно и убрать за собой. Возможно ли это воообще и как это сделать? В этом и вся суть задачи.
Mishka> Можно ещё пойти и путём ленивых вычислений.... Дальше ничего не понял.
Mishka> Ну, нет правда у нас ограничений на количество ввода-вывода. Можно исходную там хранить. Или вывести заранее исходную, а потом строить замыкание. У нас есть ссылка на матрицу смежности и вектор достижимости, а также индекс начальной вершины всё.
Воздух выдержит только тех,
Только тех, кто верит в себя,
Ветер дует туда, куда
Прикажет тот, кто верит в себя.