Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue>
  3. /*
  4.  
  5. 8
  6. 9
  7. 0 1
  8. 1 2
  9. 2 3
  10. 2 4
  11. 3 5
  12. 4 6
  13. 5 6
  14. 5 7
  15. 6 7
  16. */
  17.  
  18.  
  19.  
  20. using namespace std;
  21. //const int n = 8;
  22.  
  23. void BFS(int **G, int n, int start)
  24. {
  25. //bool visited[n] = { false };
  26. bool *visited = new bool[n];
  27. int *distance = new int[n];
  28. int *previous = new int[n];
  29. distance[start] = 0;
  30. previous[start] = -1;
  31. for (int i = 0; i < n; i++)
  32. visited[i] = false;
  33. /*tak samo jak
  34. bool visited[n];
  35. for (int i = 0; i<n;i++)
  36. visited[i] = false;
  37. */
  38. queue<int> S;
  39. S.push(start);
  40. visited[start] = true;
  41. while (!S.empty())
  42. {
  43.  
  44. cout << start << " ";
  45. start = S.front();
  46. for (int u = 0; u < n; u++)
  47. {
  48. if (G[start][u] == 1
  49. && visited[u] == false)
  50. {
  51. distance[u] = distance[start] + 1;
  52. visited[u] = true;
  53. S.push(u);
  54. previous[u] = start;
  55. }
  56. }
  57. S.pop();
  58. }
  59. for (int i = 0; i < n; i++)
  60. {
  61. cout << "v: " << i << " odleglosc od startu " << distance[i] << endl;
  62. cout << " dojscie z " << previous[i] << endl;
  63. }
  64. delete[] visited;
  65. delete[] distance;
  66. delete[] previous;
  67. }
  68.  
  69. int main()
  70. {
  71. int n;
  72. cin >> n;
  73. //int *G = new int[n];
  74. int **G = new int*[n];
  75. for (int i = 0; i < n; i++)
  76. {
  77. G[i] = new int[n];
  78. for (int j = 0; j < n; j++)
  79. G[i][j] = 0;
  80. }
  81.  
  82. //int G[n][n];
  83.  
  84. int m;
  85. cin >> m;
  86. for (int i = 0; i < m; i++)
  87. {
  88. int a, b;
  89. cin >> a;
  90. cin >> b;
  91. G[a][b] = 1;
  92. G[b][a] = 1;
  93. }
  94. BFS(G,n, 2);
  95.  
  96. for (int i = 0; i<n; i++)
  97. delete[] G[i]; //kasowanie
  98. delete[] G;
  99.  
  100.  
  101. system("pause");
  102. return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement