Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- //B)
- //| 1 0 0 3 0 0 7 |
- //| 0 0 2 0 4 0 1 |
- //| 0 2 0 4 1 2 3 |
- //| 3 0 4 0 5 3 3 |
- //| 0 4 1 5 0 1 2 |
- //| 0 0 2 3 1 0 2 |
- //| 7 1 3 3 2 2 0 |
- //Narysuj graf G(w B wartości oznaczają wagi a nie liczbę krawędzi).
- //Napisz metodę przechodzenia grafu w głąb i zastosuj dla grafu G
- class Program
- {
- // Bierzemy pierwszy wierzchołek, kłADZIEMY NA STOS .
- // Następnie kolejno pobieramy wierzchołek ze stosu,
- // jeśli nie był już odwiedzony to odwiedzamy go
- // i wkładamy wszystkich jego nieodwiedzonych sąsiadów na stos
- // w kolejności od tego z największym indeksem (czyli od końca).
- // Kontynuujemy aż stos będzie pusty.
- // NA MACIERZY SASIEDZTWA
- static void DFS(int[,] G, int v)
- {
- Stack<int> stos = new Stack<int>();
- bool[] odwiedzony = new bool[G.GetLength(0)];
- stos.Push(v);
- while (stos.Count > 0)
- {
- v = stos.Pop();
- if (!odwiedzony[v])
- {
- Console.WriteLine(v);
- odwiedzony[v] = true;
- // wkładam od końca wtedy kompatybilnie z rekurencją
- for (int i = G.GetLength(0) -1; i >= 0; i--)
- {
- if (G[v,i] != 0 && !odwiedzony[i])
- {
- stos.Push(i);
- }
- }
- }
- }
- }
- //REKURENCJA
- // NA MACIERZY SASIEDZTWA
- static bool[] visited ;
- static void DFSRekurencja(int[,] G, int v)
- {
- Console.WriteLine(v);
- visited[v] = true;
- // tu wkładam po kolei, nie od końca
- for (int i = 0; i < G.GetLength(0); i++)
- {
- if (G[v, i] != 0 && !visited[i])
- {
- DFSRekurencja(G, i);
- }
- }
- }
- static void Main(string[] args)
- {
- int[,] G = {
- { 1, 0, 0, 3, 0, 0, 7 },
- { 0, 0, 2, 0, 4, 0, 1 },
- { 0, 2, 0, 4, 1, 2, 3 },
- { 3, 0, 4, 0, 5, 3, 3 },
- { 0, 4, 1, 5, 0, 1, 2 },
- { 0, 0, 2, 3, 1, 0, 2 },
- { 7, 1, 3, 3, 2, 2, 0 }
- };
- DFS(G, 4);
- Console.WriteLine();
- visited = new bool[G.GetLength(0)];
- DFSRekurencja(G,4);
- Console.ReadKey();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement