Вот код:
#inclue <iostream>
using namespace std;
vector< vector<int> > g;
vector<char> used;
void dfs(int v)
{
used[v] = true;
for(int i = 0; i < g[v].size(); i++)
{
if(!used[g[v][i]]) dfs[g[v][i]];
}
}
int main()
{
int n, k;
cin >> n >> k;
g.reserve(n);
used.reserve(n);
for(int i = 0; i < n; i++)
{
g[i].reserve(n);
for(int j = 0; j < n; j++)
{
int v;
cin >> v;
g[i].push_back(v);//ошибка вылазит тут
}
}
dfs(k-1);
int c = 0;
for(int i = 0; i < n; i++)
{
if(used[i]) c++;
}
return 0;
}
текст ошибки:
Process returned -1073741819 (0xC0000005)
Очевидный вылет за пределы вектора g
. Ваш вектор g
имеет размер 0, а вы смело лезете в g[i]
.
Количество доступных элементов вектора задается методом resize
, а не методом reserve
.
См. также Для чего нужен reserve() в C++?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Учусь писать расширения для Python 3 на C++
Пробую унести из декларации класса Template в реализацию, все попытки приводят к ругани компилятора, не совсем понимаю как работает в этом случае...
Как правильно обнулить массив? Речь о любых типах массива, будь то символьный, целочисленный, динамический и тп Если способов несколько то желательно...
Есть символьный массив, в которые вводятся числа 0 и 1Нужно с помощью функции перевести элементы символьного массива из двоичной системы...