Помощь с освоением DFS

Всем привет, только начал изучать дфс, решил написать код для нахождения элементов отдельной компоненты связности в графе. Как решить проблему с тем, что при выводе вершины с номером n, выводится 0? + при передаче в качестве вершины старта дфс n, выдает segmentation fault.

Граф:
n = 6, m= 6
1 3
3 5
1 5
2 4
2 6
4 6

По идеи при запуске dfs(2) , otput = 2 6 4, но вместо него получаю output = 2 0 4

Код моего дфса:

#include <bits/stdc++.h>
using namespace std;

#define len(x) (int)x.size()
#define V vector
#define PB push_back

typedef vector <int> vi;

V <char> used(1000);
vi first_component;

void dfs(V <vi> &g, int v)
{
    used[v] = true;
    first_component.PB(v);

    for(auto i : g[v]) {
        if(!used[i]) dfs(g, i);
    }
}

int main()
{
    int n,m,k;
    cin >> n >> m >> k;
    V <vi> g(n);

    for(int i = 0; i < m; i++) {
        int x,y;
        cin >> x >> y;
        x--;y--;
        g[x].PB(y);
        g[y].PB(x);
    }

    dfs(g, k);

    for(auto i : first_component) cout << i << " ";

    return 0;

}
1 лайк

Бро ты же при считывании ребра считываешь и уменьшаешь номера на 1, так что у тебя и не существует вершины n

2 лайка

Мне видимо противпоказано писать код ночью, извиняюсь. Спасибо за ответ

1 лайк