Требуется оптимизировать код на C++, чтобы он проходил в рамки по времени (2 сек) и памяти (256 МБ)
Программа проверяется несколько раз и поэтому во всех итерациях не проходит по ограничению памяти (макс. 256МБ) или времени (макс. 2 сек). Прошу помощи, т.к. не разбираюсь в тонкостях и оптимизации С++. Спасибо.
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
long long depth_max = 99999999;
vector<vector<long long> > sp(0);
void dfs(long long v, long long x, vector<bool> chek, long long depth = 0)
{
chek[v] = true;
if (depth < depth_max && v == x)
{
depth_max = depth;
}
for (int i = 0; i < sp[v].size(); i++)
{
long long to = sp[v][i];
if (!chek[i] && to == 1)
{
dfs(i, x, chek, depth + 1);
}
}
}
int main()
{
long long n, m, sumx = 0, x, y;
cin >> n;
vector<bool> chek(n, false);
sp.resize(n, vector<long long>(n, 0));
m = n;
for (int i = 0; i < m - 1; ++i)
{
cin >> x;
cin >> y;
sp[x - 1][y - 1] = 1;
sp[y - 1][x - 1] = 1;
}
for (int i = 1; i < n; ++i)
{
depth_max = 99999999;
dfs(i - 1, i, chek);
sumx += depth_max;
}
depth_max = 99999999;
dfs(n - 1, 0, chek);
sumx += depth_max;
cout << sumx << endl;
}
