Добавил:
FluffyUnicorn
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Структуры данных примеры / Граф / dfsr
.cpp//Поиск в глубину рекурсивный
#include <conio.h>
#include <iostream>
#define N 6
using namespace std;
/*int G[N][N]={{0,1,1,0},
{1,0,1,0},
{1,0,0,1},
{0,1,0,0}},
P[N]={0,0,0,0},
*/
int G[N][N]={0,1,1,0,0,0,
1,0,1,0,0,0,
1,0,0,1,0,0,
0,1,0,0,1,0,
0,0,0,0,0,1,
0,0,0,1,1,0},
P[N]={0,0,0,0,0,0}, c=0;
int next (int i, int cur)
{
cur++;
while (cur<N && !G[i][cur]) cur++;
if (cur<N) return cur;
return -1;
}
void DFSR (int x)
{
int y;
P[x] = ++c; //помещаем вершину в путь
y = next (x, -1);
while (y != -1) //пока есть смежные вершины
{
if (!P[y]) //если вершины еще нет в пути
DFSR (y); //продолжаем с нее обход
y = next (x, y); //переходим к следующей вершине
}
}
main()
{
int x;
/* for (x=0; x<N; x++)
if (P[x]==0) DFSR(x);
*/
DFSR(1);
for (x=0; x<N; x++)
cout << P[x] <<" ";
getch();
return 0;
}