В то время как другие ответы верны в том, чтобы рассказать вам, в чем проблема, они упускают возможность дать вам реальный способ объявить динамические c массивы.
Из топи c, являющихся "топологической сортировкой", я Предположим, что вы тестировали только тогда, когда объявляли свою переменную n
и позже она могла быть реальной переменной (а не константой).
Если это так, пожалуйста, посмотрите Как создать динамический c массив целых чисел .
Короче говоря: Вы можете создать указатель, который указывает на начало массива в куче:
int* visited = new int[n];
, который работает просто как вы привыкли к массивам, но должны быть освобождены с помощью delete
, чтобы избежать утечки памяти.
Лучше использовать контейнерный класс, который сделает это за вас:
std::vector<int> visited(n);
Поставьте любую строку в вашем коде, и она будет работать как положено.
В качестве общей рекомендации вам следует Прочтите руководства по работе с STL, включая обзор классов контейнеров.