-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAlgorithms.hpp
More file actions
34 lines (31 loc) · 1.69 KB
/
Algorithms.hpp
File metadata and controls
34 lines (31 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Ariel shamay
// 207565573
// arielsh49@gmail.com
#ifndef ALGORITHMS_HPP
#define ALGORITHMS_HPP
#include "Graph.hpp"
#include <vector>
#include <string>
namespace ariel {
class Algorithms {
public:
static bool isConnected(const Graph& grp);
static std::string shortestPath(const Graph& grp, size_t start, size_t end);
static std::string isContainsCycle(const Graph& grp) ;
static std::string isBipartite(const Graph& grp);
static std::string negativeCycle(const Graph& grp);
static std::string detectAndConstructCycle(const Graph &grp, const std::vector<int> &dist, const std::vector<size_t > &parent);
static std::vector<size_t> traceCycle(const std::vector<size_t> &parent, size_t start);
static std::string formatCycle(const std::vector<size_t> &cycle);
static void DFS(const Graph& grp, size_t node, std::vector<bool>& visited);
static std::vector<size_t> handleCycle(ariel::StartNode startNode, ariel::EndNode endNode, std::vector<size_t>& parent);
static bool isCyclicUtil(size_t v, std::vector<bool>& visited, std::vector<bool>& recStack, std::vector<size_t >& parent, const Graph& g, std::vector<size_t>& cycle);
static void relaxEdges(const Graph &grp, vector<int> &dist, vector<size_t> &pred);
static std::string reconstructPath(size_t start, size_t end, const vector<size_t> &pred);
static bool tryColorGraph(const Graph& grp, std::vector<int>& colorArr);
static std::string buildBipartiteResult(const std::vector<int>& colorArr);
private:
static bool isEdgeAndNotVisited(size_t v, size_t i, const Graph& grp, std::vector<bool>& visited);
};
}
#endif // ALGORITHMS_HPP