Witam, piszę program który ma przeszukać graf w poszukiwania cykli do których należą poszczególne wierzchołki.
#include <iostream>
#include <queue>
using namespace std;
int n;
bool *visited;
char **graf;
queue<int>Q;
bool DfsFindCycle(int start, int now)
{
visited[now]=true;
for(int i=0; i<n; i++) if((graf[now][i])&&(Q.front()!=now))
{
Q.push(now);
if(i==start) return true;
if((!visited[i])&&(DfsFindCycle(start, i))) return true;
Q.pop();
}
return 0;
}
int main()
{
int m, v1, v2;
cin>>n>>m;
visited = new bool[n];
graf = new char*[n];
for(int i=0; i<n; i++)
graf[n] = new char[n];
for(int i=0; i<n; i++)
{
visited=false;
for(int j=0; j<n; j++) graf[i][j]=0;
}
for(int i=0; i<n; i++)
{
cin>>v1>>v2;
graf[v1-1][v2-1]=graf[v2-1][v1-1]=1;
}
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
visited[n]=false;
Q.push(-1);
if(DfsFindCycle(i, i))
{
cout<<i<<": ";
while(!Q.empty())
{
v1=Q.front();
Q.pop();
cout<<v1;
}
}
else Q.pop();
}
for(int i=0; i<n; i++) delete [] graf[i];
delete [] graf;
delete [] visited;
return 0;
}
Program po dopaleniu się wczytuje zmienną n i m a następnie kończy prace z błędem 3221225477
Gdy odpalam go na debugerze pokazuje że błąd jest w linijce 35:
for(int j=0; j<n; j++) graf[i][j]=0;
Jak trochę kombinowałem to zauważyłem, że błąd pojawia się w pierwszej linijce w której próbuje się odwołać do tablicy graf.
Z góry dziękuje za odpowiedź