Pisze program którego zadaniem będzie zaprezentowanie działania algorytmu przeszukiwania wszerz. Znalazłem algorytm ale jest on napisany w c++ i zabardzo nie wiem jak się za niego zabrać, główny problem to zastosowana tu kolejka.

Założenia dla przeszukiwania wszerz są następujące

Utwórz kolejkę Q i zainicjuj ją jako pustą
Oznacz wszystkie węzły jako nieodwiedzone
//załóżmy ze startujemy z węzła A...
Oznacz węzeł A jako odwiedzony i dodaj do kolejki Q
Wykonuj następujące kroki, dopóki kolejka nie jest pusta:
Pobierz węzeł z kolejki (nazwijmy go X)
Odwiedź te węzły przyległe do X, które jeszcze nie zostały odwiedzone
Dodaj do kolejki wszystkie węzły przyległe do X;
Zwolnij obiekt Q;

a w c++ wygląda to następująco

#define Max_Nodes 10 //Maksymalna liczba wierzcholkow w macierzy
using namespace std;

int Macierz[Max_Nodes][Max_Nodes];
int Odwiedzony[Max_Nodes];
int LiczbaWierzcholkow;

//Kolejka do przechowywania wierzcholkow w BFS
queue<int, list<int> > kolejka;

//Funkcja zwraca OSTATNI nieodwiedzony nastepnik wierzcholka v
int nastepnik_dfs(int v)
{
int i;

for (i=LiczbaWierzcholkow-1;i>=0;i--)
if ((Macierz[i][v]==1)&&(Odwiedzony[i]==0))
{
Odwiedzony[i]=1;
return(i);
}

//Wierzcholek v nie ma juz nastepnikow do odwiedzenia
return(-1);
}

//Funkcja zwraca PIERWSZY nieodwiedzony nastepnik wierzcholka v
int nastepnik_bfs(int v)
{
int i;

for (i=0;i<LiczbaWierzcholkow;i++)
if ((Macierz[i][v]==1)&&(Odwiedzony[i]==0))
{
Odwiedzony[i]=1;
return(i);
}

//Wierzcholek v nie ma juz nastepnikow do odwiedzenia
return -1;
}

void bfs(int v)
{
int u;
int nastepny;
printf("%d ",v+1);
Odwiedzony[v]=1;
nastepny=nastepnik_bfs(v);
while (nastepny!=-1)
{
kolejka.push(nastepny);
nastepny=nastepnik_bfs(v);
}
if (!kolejka.empty())
{
u=kolejka.front();
kolejka.pop();
bfs(u);
}
}

void main(void)
{
FILE *Plik_We;
int i,j;

for (i=0;i<Max_Nodes;i++)
Odwiedzony[i]=0;

Plik_We=fopen("graf.txt","rt");
fscanf(Plik_We,"%d",&LiczbaWierzcholkow);

for (j=0;j<LiczbaWierzcholkow;j++)
for (i=0;i<LiczbaWierzcholkow;i++)
fscanf(Plik_We,"%d",&Macierz[i][j]);

for (i=0;i<Max_Nodes;i++)
Odwiedzony[i]=0;

//BFS
printf("\nPrzeszukiwanie BFS: ");
bfs(0);
printf("\n\n\nDowolny klawisz...");
getch();
fclose(Plik_We);
return;
}

Z góry dzięki za pomoc w przerobieniu tego na Delphi