Всем привет, только начал изучать дфс, решил написать код для нахождения элементов отдельной компоненты связности в графе. Как решить проблему с тем, что при выводе вершины с номером 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;
}