Witam, napisalem program, dla przykladowych danych wyswietla dobre wyniki ale sedzia upiera sie ze sa bledne odpowiedz.
Prosze o pomoc jesli ktos wie dlaczego nie uznaje mi programu.
#include <iostream>
#include <cstdio>
#define MAXV 1000
using namespace std;
int odwiedzone[MAXV+1];
struct node
{
int inf;
node* next;
node* prev;
};
struct Stos
{
int tab[MAXV+1];
int stan;
Stos(){stan=0;}
void push(int v)
{
tab[stan] = v;
stan++;
}
int pop()
{
if(stan>0)
{
stan--;
return tab[stan];
}
}
bool pusty()
{
if(stan==0){return true;}else{return false;}
}
};
struct Kolejka
{
int start, stop;
int tab[MAXV+1];
Kolejka()
{
start = 0;
stop = 0;
}
void dodajNaKoniec(int v)
{
tab[stop] = v;
stop++;
}
int usunZPoczatku()
{
int tmp = tab[start];
start++;
return tmp;
}
bool pusta()
{
if(stop==start){return true;} else {return false;}
}
};
struct Graf
{
node* lista[MAXV+1];
int wierzcholki;
Graf()
{
for(int j = 0; j<=MAXV; j++)
{
lista[j] = NULL;
}
}
void dodaj(int v, int i)
{
if(i!=0)
{
node* temp = new node;
temp->inf = i;
temp->next = lista[v];
lista[v] = temp;
}
}
void DFS(int v)
{
for(int i = 0; i<=wierzcholki; i++)
{
odwiedzone[i] = 0;
}
Stos stos;
int tmp;
node* p = new node;
stos.push(v);
odwiedzone[v]=1;
while(!stos.pusty())
{
tmp = stos.pop();
cout<<tmp/*<<" "*/;
p = lista[tmp];
while(p!=NULL)
{
if(odwiedzone[p->inf]==0)
{
stos.push(p->inf);
odwiedzone[p->inf] = 1;
}
p = p->next;
}
}
}
void BFS(int v)
{
for(int i = 0; i<=wierzcholki; i++)
{
odwiedzone[i] = 0;
}
Kolejka kolejka;
int tmp;
node* p = new node;
kolejka.dodajNaKoniec(v);
odwiedzone[v]=1;
while(!kolejka.pusta())
{
tmp = kolejka.usunZPoczatku();
cout<<tmp/*<<" "*/;
p = lista[tmp];
while(p!=NULL)
{
if(odwiedzone[p->inf]==0)
{
kolejka.dodajNaKoniec(p->inf);
odwiedzone[p->inf] = 1;
}
p = p->next;
}
}
}
};
int main()
{
int t, n, z, m, v, a, b=0;
cin>>t;
Graf tabGrafow[t];
for(int i = 0; i < t; i++)
{
cin>>n;
tabGrafow[i].wierzcholki = n;
for(int j = 0; j < n; j++)
{
b=0;
cin>>z;
cin>>m;
for( int k = 0; k < m; k++)
{
cin>>a;
tabGrafow[i].dodaj(z,a);
}
}
cout<<"graph "<<i+1<<endl;
cin>>z;
cin>>m;
while(z!=0)
{
if(m==1)
{
tabGrafow[i].BFS(z);
}
else
{
tabGrafow[i].DFS(z);
}
//cout<<endl;
cin>>z;
cin>>m;
}
}
}
@edit
dobrze, chyba juz wiem gdzie mam blad D: zle mi dodaje w liscie sasiedztwa elementy :<