У меня есть два класса, один Graph.h и Vertex.h (Directed Graph)Реализация Graph C++ (узлы символов)
#ifndef VERTEX_H #ifndef GRAPH_H
#define VERTEX_H #define GRAPH_H
#include <iostream> #include "vertex.h"
#include <vector> using namespace std;
using namespace std; class Graph {
class Vertex { private:
private: vector<Vertex> vertices;
vector<char> edges;
char label;
public: public:
Vertex(char); void addEdge(char,char);
void addEdge(char); int vertexCount();
char getLabel(); bool vertexExists(char);
const vector<char> getEdges(); bool pathExists(char, char);
}; };
#endif /* vertex_h */ #endif /* graph_h */
Я уже решил его с помощью BFS, но я думаю, что было бы более эффективное решение с использованием dfs. Я вставил некоторые узлы для испытаний,
graph = new Graph();
graph->addEdge('P', 'R');
graph->addEdge('P', 'W');
graph->addEdge('Q', 'X');
graph->addEdge('R', 'X');
graph->addEdge('S', 'T');
graph->addEdge('T', 'W');
graph->addEdge('W', 'S');
graph->addEdge('W', 'Y');
graph->addEdge('Y', 'R');
graph->addEdge('R', 'Z');
I implementaion если набросал будет выглядеть как this
Мой вопрос заключается в том, как бы я выполнить DFS/BFS, чтобы увидеть, если есть существует между P- путь > Т.