hurmawe

6 задача

Dec 26th, 2020 (edited)
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.69 KB | None | 0 0
  1. //формат ввода длина, массив смежности, начальная точка
  2. //5
  3. //0 1 0 0 1
  4. //1 0 1 0 0
  5. //0 1 0 0 0
  6. //0 0 0 0 0
  7. //1 0 0 0 0
  8. //4
  9. //4 // Точка
  10. //0 // Длина
  11.  
  12. //5
  13. //0 1 0 0 1
  14. //1 0 1 0 0
  15. //0 1 0 0 0
  16. //0 0 0 0 0
  17. //1 0 0 0 0
  18. //3
  19. //5 // Точка
  20. //3 // Длина
  21.  
  22.  
  23. #include <iostream>
  24. #include <vector>
  25. #include <queue>
  26.  
  27. using namespace std;
  28.  
  29. void BFS(const vector<vector<int>>& array,const int& start, vector<int>& distance)
  30. {
  31.     queue<int> Q;
  32.     vector<int> parent(array.size(),-2);
  33.  
  34.     parent[start-1] = -1;
  35.     distance[start-1] = 0;
  36.     Q.push(start-1);
  37.     int vr;
  38.     while(Q.size()) {
  39.         vr=Q.front();
  40.         Q.pop();
  41.         for (int i = 0; i < array.size(); i++)
  42.         {
  43.             if (array[vr][i] == 1)
  44.             {
  45.                 if (distance[i] == -1)
  46.                 {
  47.                     Q.push(i);
  48.                     parent[i]=vr;
  49.                     distance[i] = distance[vr] + 1;
  50.                 }
  51.             }
  52.         }
  53.     }
  54. }
  55. int  main() {
  56.  
  57.     int32_t         lenght;
  58.     int32_t         start;
  59.     int32_t         max=0;
  60.     int32_t         number;
  61.     cin >> lenght;
  62.  
  63.     vector<int> distance(lenght, -1);
  64.  
  65.     vector<vector<int>>  array(lenght);
  66.     for(int i =0; i < lenght; i++) {
  67.         array[i].resize(lenght);
  68.         for (int j = 0; j < lenght; ++j) {
  69.             cin >> array[i][j];
  70.         }
  71.     }
  72.  
  73.     cin >> start;
  74.     number =start;
  75.     BFS(array,start,distance);
  76.  
  77.     for(int i=0;i<lenght;i++)
  78.     {
  79.         if(distance[i]>max)
  80.         {
  81.             number=i+1;
  82.             max=distance[i];
  83.         }
  84.     }
  85.     cout << number << endl << max;
  86.  
  87. }
Add Comment
Please, Sign In to add comment