Add base paper and tarjan's SCC algorithm

This commit is contained in:
stefiosif
2022-05-06 12:25:04 +03:00
parent adb36adea7
commit 122d11b189
7 changed files with 186 additions and 67 deletions

36
graph/vertex.h Normal file
View File

@@ -0,0 +1,36 @@
#ifndef VERTEX_H_
#define VERTEX_H_
#include <cstdint>
#include <compare>
#include <ostream>
#include <vector>
namespace graph {
template<typename T>
class Vertex {
public:
Vertex() = default;
Vertex(T v) : v(v) {}
T v;
std::uint16_t index = -1;
std::uint16_t lowlink = -1;
bool onStack = false;
std::vector<Vertex<T>> edges;
auto operator<=>(const Vertex&) const = default;
template<typename T>
friend inline std::ostream& operator<<(std::ostream& os, const Vertex<T>& v);
};
template<typename T>
inline std::ostream& operator<<(std::ostream& os, const Vertex<T>& vout) {
return os << vout.v;
}
} // namespace graph
#endif