Если n
и m
являются максимально допустимым значением 500,000
, тогда расстояние будет иметь 500,000 * 500,000
элементов, которые будут использовать 1 ТБ памяти.Из-за растущего вектора, когда вы push_back
, вам может понадобиться всего около 2 ТБ памяти.Он-лайн судья, по-видимому, не позволяет вам использовать столько памяти.
Если вы переосмыслите свой алгоритм, чтобы он не сохранял значения расстояния, он, вероятно, сработает.
Вы должны всегда использовать reserve
on std::vector
если вы знаете размер заранее, так как он должен заставить вектор выделять точно нужный объем памяти и избегать копирования в новые блоки памяти по мере роста вектора.