Advertisement
Guest User

3zadanie

a guest
Jan 23rd, 2020
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 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. //| 1 0 0 3 0 0 7 |
  9. //| 0 0 2 0 4 0 1 |
  10. //| 0 2 0 4 1 2 3 |
  11. //| 3 0 4 0 5 3 3 |
  12. //| 0 4 1 5 0 1 2 |
  13. //| 0 0 2 3 1 0 2 |
  14. //| 7 1 3 3 2 2 0 |
  15.  
  16. //Narysuj graf G(w B wartości oznaczają wagi a nie liczbę krawędzi).
  17. //Napisz metodę przechodzenia grafu w głąb i zastosuj dla grafu G
  18.  
  19. class Program
  20. {
  21. // Bierzemy pierwszy wierzchołek, kłADZIEMY NA STOS .
  22. // Następnie kolejno pobieramy wierzchołek ze stosu,
  23. // jeśli nie był już odwiedzony to odwiedzamy go
  24. // i wkładamy wszystkich jego nieodwiedzonych sąsiadów na stos
  25. // w kolejności od tego z największym indeksem (czyli od końca).
  26. // Kontynuujemy aż stos będzie pusty.
  27.  
  28. // NA MACIERZY SASIEDZTWA
  29.  
  30. static void DFS(int[,] G, int v)
  31. {
  32. Stack<int> stos = new Stack<int>();
  33. bool[] odwiedzony = new bool[G.GetLength(0)];
  34. stos.Push(v);
  35. while (stos.Count > 0)
  36. {
  37. v = stos.Pop();
  38. if (!odwiedzony[v])
  39. {
  40. Console.WriteLine(v);
  41. odwiedzony[v] = true;
  42. // wkładam od końca wtedy kompatybilnie z rekurencją
  43. for (int i = G.GetLength(0) -1; i >= 0; i--)
  44. {
  45. if (G[v,i] != 0 && !odwiedzony[i])
  46. {
  47. stos.Push(i);
  48. }
  49. }
  50. }
  51. }
  52. }
  53.  
  54. //REKURENCJA
  55. // NA MACIERZY SASIEDZTWA
  56.  
  57. static bool[] visited ;
  58.  
  59. static void DFSRekurencja(int[,] G, int v)
  60. {
  61. Console.WriteLine(v);
  62. visited[v] = true;
  63. // tu wkładam po kolei, nie od końca
  64. for (int i = 0; i < G.GetLength(0); i++)
  65. {
  66. if (G[v, i] != 0 && !visited[i])
  67. {
  68. DFSRekurencja(G, i);
  69. }
  70. }
  71. }
  72.  
  73. static void Main(string[] args)
  74. {
  75. int[,] G = {
  76. { 1, 0, 0, 3, 0, 0, 7 },
  77. { 0, 0, 2, 0, 4, 0, 1 },
  78. { 0, 2, 0, 4, 1, 2, 3 },
  79. { 3, 0, 4, 0, 5, 3, 3 },
  80. { 0, 4, 1, 5, 0, 1, 2 },
  81. { 0, 0, 2, 3, 1, 0, 2 },
  82. { 7, 1, 3, 3, 2, 2, 0 }
  83. };
  84.  
  85. DFS(G, 4);
  86. Console.WriteLine();
  87. visited = new bool[G.GetLength(0)];
  88. DFSRekurencja(G,4);
  89. Console.ReadKey();
  90.  
  91. }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement