An open API service indexing awesome lists of open source software.

https://github.com/ZigRazor/CXXGraph

Header-Only C++ Library for Graph Representation and Algorithms
https://github.com/ZigRazor/CXXGraph

algorithm algorithms bfs-algorithm cpp cpp-library cpp17 cycle-detection dfs-algorithm dijkstra-algorithm graph graph-algorithms graph-analysis graph-theory-algorithms hacktoberfest hacktoberfest-accepted header-only machine-learning partitioning partitioning-algorithms search-algorithm

Last synced: 24 days ago
JSON representation

Header-Only C++ Library for Graph Representation and Algorithms

Awesome Lists containing this project

README

          

# CXXGraph

[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5878831.svg)](https://doi.org/10.5281/zenodo.5878831)

[![DOI](https://img.shields.io/badge/doi-10.6084/m9.figshare.18705572-blue.svg?style=flat&labelColor=gainsboro&logoWidth=40&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAFAAAAAZCAYAAACmRqkJAAAKi0lEQVR4Ae3ZaVBUV97H8evuE0EfH32MmkcfoyAuGjXKgkvMaFRAFuiloemWvRuEXlgEBREXBYJiXAQUFeKocUniQiKogAJhQWwWENDEjLNYvjFLzUzNkplEZb5kTme6nCRjKlOpSZlb9SmL2%2Ffcuv3re87%2FnKP0TYfOcslqPMbt63xBKuh09MTxgi7HKT1Sj1TvKp%2BMkZB6%2FXT8c4AjUYPyVdfb7Qs6HTIJ8EHe7Ul%2B152CphDabRQ0uMr7%2FRQgh%2B8qU6%2FBiPDVGv0jq0uGE94b0ZZ3j%2B25MTetoMsh%2FWD91OBqT9%2Fsehd5EqGV17nKMzTqOHvaRMMLEp7qACfinq%2FW1BBx5ZxB13x5X3Jr1v%2Fz9pUcaHU63PiicjrhvXfNRbY1Th49Q6Y1vu6zyqSjzX3aVIgf4OkKToxhgxpd5OMzV0bYE4CRN1Chu34pnTfwnV03FiTlfzDRXBHo6dfgIq8sX6ByV6vjthGc0UdrrPPVGFQBxlSjzJQWENVUZkebceiLpyM8IZSx7O7Zl4JivUNMZX5h8Rt4%2B2L0llKfgu6JKa%2BXvpB5bZ48%2Ba3F6lil2pDkE2rODzCsU0VUnNFHNZQqdS3lx3Utl%2FMILQcfYt5TEeC1GSprgAq0XlgYGLQyxJTlr0uK0DVX7E5s2ZtOgHvLw5fLK9xVmcqguEj%2F2LXbwsvPBkZZKl4j5NcIKinaUsLbejFWZ7m8Do2cmwnb4cFqArRwx3TEYzi%2Bz7DTD0uhxnj8cAEWWUZK%2BTcdhh4pmTWUsW01Y1uCUmNY7Rtqzo5svJSS0poVXtg6yVj7sn9qunek3j8xPVXXeMFoaDkev6lDF7ene7Y5r2taNAXmEBXaP69zevaOjuUeeZ0zhzJuPsM5CdYvOhZVqBMhBqIVDt8zwGdQjR4of9AA%2BXJjUFpww7GodnHAQca4srDAWCXjW3pETal%2BbfumuOLKqSm17vIQtWr1Uu3JYy6JbXuXFbRN1R8pm5byxtG5CcdOz9EUVc7I5IeQEWQ7wWVwzwrsRn%2BbAFeiCxNsKv5Y9P03BFgjAlT90AGOQy2T47fObl00ocFZHl%2B2UGXw0RjzNUWHTPFthckHWh18al8KsGuaFigVVzlKuY%2BG9z37qvuoGlelpsJVldrgrFjbOE%2BeWe8uW18W84qCqc4s7tmCIgzI75hs%2FaJKNFu7rF%2BIIIhr%2BmIQ%2Btn8LQkDMQOeWAYnDHgsQI3NNU7W9j4h5t72o%2FEyvLEQ%2F%2Bu7ymzbOxbCAeOxAgtghz6YgOVYiufEOUlqu0M37ho%2BYn%2FnpJT8bsejVSt90uqdFdlGmV7hF7cuWXetNCShLX%2BI3nKhN%2ByvCs%2Bs6GQpWB33fzKNQR%2BqWr022yvc94q7spBCY%2Bbzkou6ZfJNPf89ZN%2FdidYHnIsKfIzjCMIc7MAwSJiMPFxGMcKQixGwx07R%2FiEe4CNsxFCbAJvwifj8LkIgYRHa8Lm47jNY8AokmMS5NryPh%2FijOB%2BOX4h7foEuyPHlisMtylJpzu1YspkQ36YbLqnx8F1X4abaqmYs9DGmLlrk4CE9XlHlKZskxfpt%2FUJLzyhV23dG%2BITF72fqo9njEaokwIu8lSbG1N4wx273CrP%2B%2BjniQVZhGrzQjlEioFIRcjDM6MIdjBVtHogvl4W9qIX8sTfwU5SgU%2FzdhdGYLcJ9BzvRID6vgx2SxN8PUI9KnIEWH4n7FuIo%2FoRfYV5vMMV4wHRFs%2BvG%2FKl05ZrDVdP11T7eulK3oNQcz%2FAXcj3DpMePjO44KetDL2lDh%2FmV1S3nNoeWnJb7RSXmMJl%2BI0GmH13rKs8lvEdQwfoWKmCxdmGbAEdgAW5jFiQhBb8WXSYTPSjGCBHaMPR5LMANkOCM%2B%2FgD3MS5Z8W1ElzwW3HNJCSI9tcw2ub%2BO8T5LPTBQBy1nusNcB7ztximI1sIsSSzXb04v3vyusJmx63nMufHXlV6LvpEShDd9x%2FHFYWXVPuSX7%2FD7zmpcjuWRupbyvaHnj8Z7BNsUFCArm70iTRcd5bFEN7oxwJs%2FpoA%2FwfBaLJ2Z2EFbmEsNKL7fYYPUI9DIqj%2Fsgkw0CasW%2BL6RbBDFI7gTZSKzz6Gk02AJ23G3QF4xybYU8INce6s5CJNlTyXhYwKv%2FRWMiEeimquzIhrPpGzuSNCsbvLec2%2Brpmh2e0yu%2FxOp96wv6p8X0xeIZW5Bo2%2F6ucdvb%2FdMWVDm8lX11pRpD16OJ6VyZsrQ8yK%2BVFJ9h4UhwEHDj5JgGE23UkSfoZujMMzSESNCPBT9KAFjqi2rcIYZRPgYmzDQ9xDLSz4%2FGsCPIE%2BNkWrTJy%2FhRrRthpVyJJExbnmG2I%2B6x%2BT%2FHxYyQkzQfJGlufpWy6bYlvPUEgu%2BHlHJA5boo7rE3blnBR7r6mv%2BvCBMYEag%2Faqsyr1%2BIk5a%2Fd2z9zGBDpZ31qulCWk9443Hfg5BuJJAgxAG0ZBEmS4DZ7RKIliMVi0d8UvRUCeuPoNAf4Z%2FmgV13pAwiwR3iffFKBQJM5noB%2F6Y5h45v7Wwf0cDtD1DlMIeiugWmZOy5Cv3RgjX7%2FF4GdMXasOjgurmqdafqpojltml9IjvOJ8NMu9lNL5gQmXdMu0BTefz8loMyoJvivs3VMZvhpjqaig%2FZ8gwJGYIsIKRh%2FY4wh%2Bg%2FGQoxYbREgZ%2BB3uww1V3xKgN%2BrwCNtF4Pvx8NveQCEYX%2BAukhCIYuHZLy%2FyDjHbJQfo7PTK1dEBWqPBX2vS%2B2hNW1XquDURypiwXStCjVWuyrSKQC%2FdoUaHtOT2HENoyal4b40x7rK7ylip9NIV3Jy0P6fD24fl3Ra6uoe3PNqOH2Pw3x%2FC8K8CHIU%2BIpQ7OI8yNOJ9TMJO%2FAU9Nn6PjRiGmm%2FpwgsRLQpKjwjuU%2Fz1CQK0R4G4T4%2FwCHWYKlmcA6xr4SA2EzobXeUa9vh21LgpdKxK8hqd5RsaXWS7S9YvlhU2O7ya3ekXrm%2B9lK3KzFH6a4y5V92Ve5hkM4d02EShMestZekE2IxZX7MWdkAgBtmsi9U2lXEwliAOK%2BGLTowThWIZkrEVSSKYgegPOUxwtFmdaBGLsRgg2qeKtosQDh2GYzbisUIEaPvcQ8T5VGzCKowBk2I3mTVALe4wd4tumKcoaZirSKte4RtVrvXwLrw%2BJXV%2F18Ts3BtLEmOaS0yRtRdMfpGJhTKNMbDJWR5V7eEbUNDtcIQAd1PJMwnuJl6E9KQHY7AAHkzQoBkj8B%2B%2FpTWQ4Maezne1P3x1esLBuqmB%2BbccNhJMGetbM%2BGZIi1V%2FoRyOXB77sKVWuPmrd4RBvYQm9ihVue%2F7xDPGljB50MoJmO%2By36gCGsQovCyCGwOarD9R7PLLXZOJjKZvse%2FDQQSvffG7F1rWrZPiLKUX2DPr1hbfHAKb0kDBSeTed5MQj94Pn1xBMvA%2B2IDYTAkcXzXANPRjHq04ACeFeH9aAIcBC3LOq%2FY5pPDeYtO4yRTmzUhbx9LozCEea8ybaHoxDNmVtPltxSVzxhCm3Asg4Tvs683Aa5wwkD8qP9XbgQqUbb6Tp09U5Os3rWiV4jZv2OuvxPdvht70RfST8fjATZd7P33OYzxZ%2FdF7FwcgqPU0yMR2vMYDulpDfBvw%2BGCdBePpq8AAAAASUVORK5CYII%3D)](https://doi.org/10.6084/m9.figshare.18705572.v1)

[![codecov](https://codecov.io/gh/ZigRazor/CXXGraph/branch/master/graph/badge.svg?token=773AQ2H9RQ)](https://codecov.io/gh/ZigRazor/CXXGraph)
[![CodeFactor](https://www.codefactor.io/repository/github/zigrazor/cxxgraph/badge)](https://www.codefactor.io/repository/github/zigrazor/cxxgraph)

[![GitHub license](https://img.shields.io/github/license/ZigRazor/CXXGraph.svg)](https://github.com/ZigRazor/CXXGraph/blob/master/LICENSE) [![GitHub release](https://img.shields.io/github/release/ZigRazor/CXXGraph.svg)](https://GitHub.com/ZigRazor/CXXGraph/releases/) [![Conan Center](https://img.shields.io/conan/v/cxxgraph)](https://conan.io/center/recipes/cxxgraph)

[![Generic badge](https://img.shields.io/badge/Required-G++7.3.0-Green.svg)](https://shields.io/) [![Generic badge](https://img.shields.io/badge/required-C++17-Green.svg)](https://shields.io/) [![Generic badge](https://img.shields.io/badge/Required-CMake3.9-Green.svg)](https://shields.io/)

[![Generic badge](https://img.shields.io/badge/Build-Passed-Green.svg)](https://shields.io/) [![Generic badge](https://img.shields.io/badge/UnitTest-Passed-Green.svg)](https://shields.io/)

## Introduction

**CXXGraph** is a comprehensive C++ library that manages graph algorithms. This header-only library serves as an alternative to the [Boost Graph Library (BGL)](https://www.boost.org/doc/libs/1_77_0/libs/graph/doc/index.html).

[CXXGraph Website](https://zigrazor.github.io/CXXGraph/)

## We are Looking for

**We are looking for:**

- **A Web Developer** for the development of the CXXGraph website. All documentation is currently hosted on this GitHub page.
- **Developers and Contributors** to provide input. If you are new to the open-source world, we will guide you step by step!

If you are interested, please contact us at or contribute to this project. We are waiting for you!

## Table of Contents

- [CXXGraph](#cxxgraph)
- [Introduction](#introduction)
- [We are Looking for...](#we-are-looking-for)
- [Table of Contents](#table-of-contents)
- [Install and Uninstall](#install-and-uninstall)
- [Install Linux Tarballs](#install-linux-tarballs)
- [Install RPM](#install-rpm)
- [Install DEB](#install-deb)
- [Install From Source](#install-from-source)
- [Requirements](#requirements)
- [How to use](#how-to-use)
- [Examples](#examples)
- [Unit-Test Execution](#unit-test-execution)
- [Google Test Installation](#google-test-installation)
- [How to Compile Test](#how-to-compile-test)
- [How to Run Test](#how-to-run-test)
- [Benchmark Execution](#benchmark-execution)
- [Google Benchmark Installation](#google-benchmark-installation)
- [How to Compile Benchmark](#how-to-compile-benchmark)
- [How to Run Benchmark](#how-to-run-benchmark)
- [Benchmark Results](#benchmark-results)
- [Packaging](#packaging)
- [Tarballs](#tarballs)
- [RPM](#rpm)
- [(Fedora/CentOS/RedHat)](#fedoracentosredhat)
- [DEB](#deb)
- [(Debian/Ubuntu)](#debianubuntu)
- [Algorithms, Classes and Network Dynamics](#algorithms-classes-and-network-dynamics)
- [How to contribute](#how-to-contribute)
- [Roadmap](#roadmap)
- [Contact](#contact)
- [Support](#support)
- [References](#references)
- [Credits](#credits)
- [Contributors](#contributors)
- [Cite Us](#cite-us)
- [Other Details](#other-details)
- [Author](#author)

## Install and Uninstall

### Install Linux Tarballs

To install on Unix/Linux systems, execute the following from the command line:

`$ sudo tar xjf CXXGraph-{version}.tar.bz2`

To uninstall:

`$ sudo rm -f /usr/include/Graph.hpp /usr/include/CXXGraph*`

### Install RPM

To install on Fedora/CentOS/RedHat systems, execute the following from the command line:

`$ sudo rpm -ivh CXXGraph-{version}.noarch.rpm`

To uninstall:

`$ sudo rpm -e CXXGraph-{version}`

### Install DEB

To install on Debian/Ubuntu systems, execute the following from the command line:

`$ sudo dpkg -i CXXGraph_{version}.deb`

To uninstall:

`$ sudo apt-get remove CXXGraph`

### Install From Source

For self-compiled installations using CMake, execute the following from the command line once compilation is complete:

`$ sudo make install`

## Prerequisites

- The minimum C++ standard required is **C++17**
- A GCC compiler version 7.3.0 and later *OR* a MSVC compiler that supports C++17

## How to use

To use the library **simply include the header file `CXXGraph.hpp`**, (make sure to add the [include folder](https://github.com/ZigRazor/CXXGraph/tree/master/include) to your compiler's inlcude path).

CXXGraph revolves around the graph object which contains nodes and edges. This object can then be manipulated with a wide variety of algorithms. Please see the [examples section](#examples), [examples folder](https://github.com/ZigRazor/CXXGraph/tree/master/examples) and [website](https://zigrazor.github.io/CXXGraph/) for more information

## Examples

In this example, the shortest path between nodeA and nodeC is obtained using Dijkstra's algorithm.

```cpp
#include
#include "CXXGraph/CXXGraph.hpp"

int main(){
CXXGraph::Node nodeA("A", 1);
CXXGraph::Node nodeB("B", 2);
CXXGraph::Node nodeC("C", 3);

CXXGraph::DirectedWeightedEdge edge1("1", nodeA, nodeB, 1);
CXXGraph::DirectedWeightedEdge edge2("2", nodeB, nodeC, 1);
CXXGraph::UndirectedWeightedEdge edge3("3", nodeA, nodeC, 6);

CXXGraph::T_EdgeSet edgeSet;
edgeSet.insert(make_shared>(edge1));
edgeSet.insert(make_shared>(edge2));
edgeSet.insert(make_shared>(edge3));

CXXGraph::Graph graph(edgeSet);
CXXGraph::DijkstraResult res = graph.dijkstra(nodeA, nodeC);

for(auto node_user_id : res.path){
std::cout << node_user_id << '\n';
}
}
```

See more examples in the [examples folder](https://github.com/ZigRazor/CXXGraph/tree/master/examples).

## Unit-Test Execution

The Unit-Test requires CMake 3.9 and later, and the **[GoogleTest](https://github.com/google/googletest)** library.

### Install GoogleTest

[GoogleTest](https://github.com/google/googletest)

```bash
git clone https://github.com/google/googletest.git
cd googletest # Main directory of the cloned repository
mkdir -p build # Create a directory to hold the build output
cd build
cmake .. # Generate native build scripts for GoogleTest
make # Compile
sudo make install # Install in /usr/local/ by default
```

### How to Compile GoogleTest

From the base directory:

```bash
mkdir -p build # Create a directory to hold the build output
cd build # Enter the build folder
cmake -DTEST=ON .. # Generate native build scripts for GoogleTest,
make # Compile
```

### How to Run GoogleTest

After the build has compiled, run the "test_exe" executable in the "build" directory with the following command:

`./test_exe`

## Benchmark Execution

The Benchmark requires CMake 3.9 and later, the **GoogleTest** library, and the **Google Benchmark** library.

### Install Google Benchmark

[Google Benchmark](https://github.com/google/benchmark)

```bash
# Check out the library
$ git clone https://github.com/google/benchmark.git
# Google Benchmark requires GoogleTest as a dependency. Add the source tree as a subdirectory
$ git clone https://github.com/google/googletest.git benchmark/googletest
# Go to the library's root directory
$ cd benchmark
# Make a build directory to place the build output
$ cmake -E make_directory "build"
# Generate the build system files with CMake
$ cmake -E chdir "build" cmake -DCMAKE_BUILD_TYPE=Release ../
# If starting with CMake 3.13, you can use the following:
# cmake -DCMAKE_BUILD_TYPE=Release -S . -B "build"
# Build the library
$ cmake --build "build" --config Release
# Install the library
$ sudo cmake --build "build" --config Release --target install
```

### How to Compile Google Benchmark

From the base directory:

```bash
mkdir -p build # Create a directory to hold the build output
cd build # Enter the build folder
cmake -DBENCHMARK=ON .. # Generate native build scripts for Google Benchmark
make # Compile
```

### How to Run Google Benchmark

After the build has compiled, run the "benchmark" executable in the "build" directory with the following command:

`./benchmark`

### Benchmark Results

You can check the benchmark result using this [link](https://zigrazor.github.io/CXXGraph/dev/bench/).

## Packaging

### Tarballs

To create a tarball package, execute the following from the command line:

```bash
# Enter Packaging Directory
$ cd packaging
# Execute the script to generate tarballs
$ ./tarballs.sh
```

### RPM

#### (Fedora/CentOS/RedHat)

To create an RPM package, execute the following from the command line:

```bash
# Enter Packaging Directory
$ cd packaging/rpm
# Execute the script to generate tarballs
$ ./make_rpm.sh
```

### DEB

#### (Debian/Ubuntu)

To create a deb package, execute the following from the command line:

```bash
# Enter Packaging Directory
$ cd packaging/deb
# Execute the script to generate tarballs
$ ./make_deb.sh
```

## Algorithms, Classes and Network Dynamics

Both the [Doxygen documentation](https://rawcdn.githack.com/ZigRazor/CXXGraph/master/docs/html/index.html) and the [website](https://zigrazor.github.io/CXXGraph/) provide implementation and explanation information on the [classes](https://rawcdn.githack.com/ZigRazor/CXXGraph/master/docs/html/classes.html) and [algorithms](https://zigrazor.github.io/CXXGraph/component-explanation/regular-algorithm) of CXXGraph.

#### Classes

The Classes Explanation can be found in the [classes section](https://rawcdn.githack.com/ZigRazor/CXXGraph/master/docs/html/classes.html) of the [Doxygen documentation](https://rawcdn.githack.com/ZigRazor/CXXGraph/master/docs/html/index.html).

#### Network Dynamics

More information can be found [here](https://zigrazor.github.io/CXXGraph/component-explanation/network-dynamics).

- Adjacency Matrix
- Degree Matrix
- Laplacian Matrix
- Transition Matrix

### Algorithms

The following is a list of all the implemented algorithms, more information on the algorithms can be found [here](https://zigrazor.github.io/CXXGraph/component-explanation/regular-algorithm).

#### Graph Traversal Algorithms

- Breadth First Search (BFS)
- Depth First Search (DFS)
- Best First Search (a heuristic-based traversal)
- Bron–Kerbosch Algorithm (for finding maximal cliques; DFS-based)

#### Shortest Path Algorithms

- Dijkstra's Algorithm (single-source shortest path, non-negative weights)
- Bellman-Ford Algorithm (handles negative weights)
- Floyd–Warshall Algorithm (all-pairs shortest path)
- Dial's Algorithm (optimized Dijkstra for small integer weights)

#### Minimum Spanning Tree Algorithms

- Prim's Algorithm
- Kruskal's Algorithm
- Borůvka's Algorithm

#### Network Flow Algorithms

- Ford–Fulkerson Algorithm (maximum flow)
- Hopcroft–Karp Algorithm (maximum bipartite matching)

#### Connectivity and Component Detection

- Kosaraju's Algorithm (strongly connected components in directed graphs)
- Tarjan's Algorithm (strongly connected components or articulation points)
- Connectivity (general graph connectivity checking)
- Cycle Detection

#### Topological & Dependency Sorting

- Topological Sort
- Kahn’s Algorithm (BFS-based topological sorting)
- Tarjan’s Algorithm (DFS-based topological sorting)

#### Eulerian Path/Cycle Detection

- Hierholzer's Algorithm

#### Graph Transformation

- Transitive Reduction (reduce graph to essential edges while preserving reachability)

#### Graph Coloring Algorithms

- Welsh–Powell Coloring Algorithm

#### Partition Algorithms

- Vertex-Cut
- Edge Balanced Vertex-Cut
- Edge Balanced Vertex-Cut based on this [paper](https://arxiv.org/abs/2010.09007)
- Greedy Vertex-Cut
- High Degree Replicated First

## How to contribute

[![GitHub contributors](https://img.shields.io/github/contributors/ZigRazor/CXXGraph.svg)](https://GitHub.com/ZigRazor/CXXGraph/graphs/contributors/)
If you want to give your support you can create a ***pull request*** [![GitHub pull-requests](https://img.shields.io/github/issues-pr/ZigRazor/CXXGraph.svg)](https://GitHub.com/ZigRazor/CXXGraph/pull/) or report an ***issue*** [![GitHub issues](https://img.shields.io/github/issues/ZigRazor/CXXGraph.svg)](https://GitHub.com/ZigRazor/CXXGraph/issues/).
If you want to change the code, fix an issue, or implement a new feature please read our [CONTRIBUTING Guide](https://github.com/ZigRazor/CXXGraph/blob/master/CONTRIBUTING.md).

If you want to discuss new features or you have any questions or suggestions about the library, please open a [Discussion](https://github.com/ZigRazor/CXXGraph/discussions) or simply chat on [![Join the chat at https://gitter.im/CXXGraph-Community/community](https://badges.gitter.im/CXXGraph-Community/community.svg)](https://gitter.im/CXXGraph-Community/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

## Roadmap

| Completed | Description | Date of Completition |
| :-------: | :---------- | :-------------------: |
| :heavy_check_mark: | Release 0.4.0 | Oct 7, 2022 |
| :heavy_check_mark: | Release 0.5.0 | Mar 23, 2023 |
| :heavy_check_mark: | First Stable Release 1.0.0 | Mar 28, 2023 |
| :heavy_check_mark: | Release 1.0.1 | May 7, 2023 |
| :heavy_check_mark: | Release 1.1.0 | May 8, 2023 |
| :heavy_check_mark: | Stable Release 2.0.0 | Jun 1, 2023 |
| :heavy_check_mark: | Stable Release 3.0.0 | Nov 3, 2023 |
| :heavy_check_mark: | Release 3.1.0 | Jan 9, 2023 |
| :memo: | Introduce Hypergraph [#122](https://github.com/ZigRazor/CXXGraph/issues/122) | TBD |
| :memo: | Stable Release 4.0.0 | TBD |

## Stars History

[![Star History Chart](https://api.star-history.com/svg?repos=ZigRazor/CXXGraph&type=Date)](https://star-history.com/#ZigRazor/CXXGraph&Date)

## Contact

E-mail :

[![Join the chat at https://gitter.im/CXXGraph-Community/community](https://badges.gitter.im/CXXGraph-Community/community.svg)](https://gitter.im/CXXGraph-Community/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

[GitHub Profile](https://github.com/ZigRazor) ![Profile views](https://gpvc.arturio.dev/ZigRazor)

![ZigRazor's github stats](https://github-readme-stats.vercel.app/api?username=ZigRazor&show_icons=true&title_color=fff&icon_color=79ff97&text_color=9f9f9f&bg_color=151515)

## Support

To support me, add a ***Star*** to the project [![GitHub stars](https://img.shields.io/github/stars/ZigRazor/CXXGraph.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/ZigRazor/CXXGraph/stargazers/) or ***follow me*** [![GitHub followers](https://img.shields.io/github/followers/ZigRazor.svg?style=social&label=Follow&maxAge=2592000)](https://github.com/ZigRazor?tab=followers)

To stay updated, ***watch*** the project [![GitHub watchers](https://img.shields.io/github/watchers/ZigRazor/CXXGraph.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/ZigRazor/CXXGraph/watchers/)

## References

We are referenced by:

- [awesome-hpp](https://github.com/p-ranav/awesome-hpp)
- [cppreference.com](https://en.cppreference.com/w/cpp/links/libs)
- [awesome-cpp](https://github.com/fffaraz/awesome-cpp)

## Credits

Thanks to the community of [TheAlgorithms](https://github.com/TheAlgorithms) for some algorithm inspiration.

Thanks to [GeeksForGeeks](https://www.geeksforgeeks.org/) for some algorithm inspiration.

## Contributors

Thank you to all the people who have already contributed to CXXGraph!

[![Contributors](https://contrib.rocks/image?repo=zigrazor/CXXGraph)](https://github.com/ZigRazor/CXXGraph/graphs/contributors)

## Cited By

- Ruizhe Wang, Meng Xu, and N. Asokan. 2024. SeMalloc: Semantics-Informed Memory Allocator. In Proceedings of the 2024 on ACM SIGSAC Conference on Computer and Communications Security (CCS '24). Association for Computing Machinery, New York, NY, USA, 1375–1389.

## Cite Us

If you use this software please follow the [CITATION](https://github.com/ZigRazor/CXXGraph/blob/master/CITATION) instructions.
Thank you!

## Other Details

We participated in Hacktoberfest 2021, 2022 and 2023. Thank you to all the contributors!

View the [Estimated Value of the Project](https://www.openhub.net/p/CXXGraph/estimated_cost)

## Author

| [
@ZigRazor](https://github.com/ZigRazor) |
|:----:|