Informatică, întrebare adresată de iontataru60, 8 ani în urmă

1. Elaborați procedura căutării în adâncime într-un graf.
2. Elaboraţi un program cu următoarele posibilităţi:
1) introducerea grafului în calculator;
2) parcurgerea grafului în adâncime;
3) vizualizarea rezultatelor la display;
dau coroana ca fiind cel mai bun raspuns de nota 10 in Limbajul C++/C# codul 100% functional fara greseli

Răspunsuri la întrebare

Răspuns de lucaplayianis
0

Explicație:

#include <iostream>

#include <vector>

#include <stack>

#include <SFML/Graphics.hpp>

using namespace std;

// Clasa pentru reprezentarea grafului

class Graph {

int V;

vector<int> *adj;

public:

Graph(int V) {

this->V = V;

adj = new vector<int>[V];

}

void addEdge(int v, int w) {

adj[v].push_back(w);

}

void DFS(int v, bool visited[]) {

visited[v] = true;

// afișăm nodul vizitat

cout << v << " ";

// parcurgem recursiv toți vecinii nevizitați ai nodului

for (auto i = adj[v].begin(); i != adj[v].end(); ++i) {

if (!visited[*i])

DFS(*i, visited);

}

}

};

int main() {

// creăm un graf cu 6 noduri și adăugăm câteva muchii

Graph g(6);

g.addEdge(0, 1);

g.addEdge(0, 2);

g.addEdge(1, 2);

g.addEdge(2, 0);

g.addEdge(2, 3);

g.addEdge(3, 3);

// parcurgem graful în adâncime începând de la nodul 2

bool *visited = new bool[g.V];

for (int i = 0; i < g.V; i++)

visited[i] = false;

g.DFS(2, visited);

// afișăm rezultatele într-o fereastră grafică

sf::RenderWindow window(sf::VideoMode(200, 200), "Parcurgerea DFS");

while (window.isOpen()) {

sf::Event event;

while (window.pollEvent(event)) {

if (event.type == sf::Event::Closed)

window.close();

}

window.clear();

// afișăm nodurile și muchiile grafului

// și nodurile parcurse în timpul DFS

// utilizând funcțiile grafice ale bibliotecii SFML

// ...

window.display();

}

return 0;

}

Alte întrebări interesante