Advertisement
Guest User

zad4

a guest
Jan 23rd, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. //B)
  8. // WESJA WSZERZ
  9. // NA MACIERZY SASIEDZTWA
  10.  
  11. //| 1 0 0 3 0 0 7 |
  12. //| 0 0 2 0 4 0 1 |
  13. //| 0 2 0 4 1 2 3 |
  14. //| 3 0 4 0 5 3 3 |
  15. //| 0 4 1 5 0 1 2 |
  16. //| 0 0 2 3 1 0 2 |
  17. //| 7 1 3 3 2 2 0 |
  18.  
  19. //Narysuj graf G(w B wartości oznaczają wagi a nie liczbę krawędzi).
  20. //Napisz metodę przechodzenia grafu w WsZERZ i zastosuj dla grafu G
  21.  
  22. class Program
  23. {
  24. static void BFS(int[,] G, int v)
  25. {
  26. Queue kolejka = new Queue();
  27. bool[] odwiedzony = new bool[G.GetLength(0)];
  28. kolejka.Enqueue(v);
  29. while (kolejka.Count > 0)
  30. {
  31. v = kolejka.Dequeue();
  32. if (!odwiedzony[v])
  33. {
  34. Console.WriteLine(v);
  35. odwiedzony[v] = true;
  36. // do kolejki mogą być włożone powtórnie te które już są
  37. for (int i = 0; i < G.GetLength(0); i++)
  38. {
  39. if (G[v, i] != 0 && !odwiedzony[i])
  40. {
  41. kolejka.Enqueue(i);
  42. }
  43. }
  44. }
  45. }
  46. }
  47.  
  48. // TERAZ TYLKO RAZ JEST WKLADANY DO KOLEJKI
  49. //
  50. // gdyby tak zrobic dla DFS i wkładać na stos tylko niewłożone
  51. // to wynik byłby inny a dla kolejki wynik jest taki sam jak wyżej
  52.  
  53. static void BFS1(int[,] G, int v)
  54. {
  55. Queue kolejka = new Queue();
  56. bool[] wlozony = new bool[G.GetLength(0)];
  57. kolejka.Enqueue(v);
  58. wlozony[v] = true;
  59.  
  60. while (kolejka.Count > 0)
  61. {
  62. v = kolejka.Dequeue();
  63. Console.WriteLine(v);
  64.  
  65. for (int i = 0; i < G.GetLength(0); i++)
  66. {
  67. // jak włożony to drugi raz nie włożymy
  68. if (G[v, i] != 0 && !wlozony[i])
  69. {
  70. kolejka.Enqueue(i);
  71. wlozony[i] = true;
  72. }
  73. }
  74. }
  75. }
  76.  
  77. static void Main(string[] args)
  78. {
  79. int[,] G =
  80. {
  81. { 1, 0, 0, 3, 0, 0, 7 },
  82. { 0, 0, 2, 0, 4, 0, 1 },
  83. { 0, 2, 0, 4, 1, 2, 3 },
  84. { 3, 0, 4, 0, 5, 3, 3 },
  85. { 0, 4, 1, 5, 0, 1, 2 },
  86. { 0, 0, 2, 3, 1, 0, 2 },
  87. { 7, 1, 3, 3, 2, 2, 0 }
  88. };
  89. BFS(G, 4);
  90. Console.WriteLine();
  91. BFS1(G, 4);
  92. Console.WriteLine();
  93.  
  94. Console.ReadKey();
  95.  
  96. }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement