Требуется оптимизировать код на 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;
    
}

Ответы (0 шт):