Advertisement
karbaev

DFS

Mar 28th, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4. const int n=5;
  5. int i, j;
  6. bool *visited=new bool[n];
  7. //матрица смежности графа
  8. int graph[n][n] =
  9. {
  10.   {0, 1, 0, 0, 1},
  11.   {1, 0, 1, 1, 0},
  12.   {0, 1, 0, 0, 1},
  13.   {0, 1, 0, 0, 1},
  14.   {1, 0, 1, 1, 0}
  15. };
  16.  
  17. //поиск в глубину
  18. void DFS(int st) {
  19.   int r;
  20.   cout<<st+1<<" ";
  21.   visited[st]=true;
  22.   for (r=0; r<=n; r++)
  23.   if ((graph[st][r]!=0) && (!visited[r]))
  24.     DFS(r);
  25. }
  26.  
  27. //главная функция
  28. void main() {
  29.   setlocale(LC_ALL, "Rus");
  30.   int start;
  31.   cout<<"Матрица смежности графа: "<<endl;
  32.   for (i=0; i<n; i++) {
  33.     visited[i]=false;
  34.     for (j=0; j<n; j++)
  35.     cout<<" "<<graph[i][j];
  36.    cout<<endl;
  37.   }
  38.   cout<<"Стартовая вершина >> "; cin>>start;
  39.   //массив посещенных вершин
  40.   bool *vis=new bool[n];
  41.   cout<<"Порядок обхода: ";
  42.   DFS(start-1);
  43.   delete []visited;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement