Skip to content

Commit 4f981e8

Browse files
committed
fix: replaced unsigned int with std::uint32_t for fixed size
1 parent 2cc7ed9 commit 4f981e8

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

graph/number_of_paths.cpp

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include <vector> /// for std::vector
1515
#include <iostream> /// for IO operations
1616
#include <cassert> /// for assert
17+
#include <cstdint> /// for fixed-size integer types (e.g., std::uint32_t)
1718

1819
/**
1920
* @namespace graph
@@ -30,15 +31,19 @@ namespace graph {
3031
* @param visited a vector to keep track of visited nodes in the current DFS path
3132
* @returns the number of paths from node `u` to node `v`
3233
*/
33-
int count_paths_dfs(const std::vector<std::vector<unsigned int>>& A, int u, int v, int n, std::vector<bool>& visited) {
34+
std::uint32_t count_paths_dfs(const std::vector<std::vector<std::uint32_t>>& A,
35+
std::uint32_t u,
36+
std::uint32_t v,
37+
std::uint32_t n,
38+
std::vector<bool>& visited) {
3439
if (u == v) {
3540
return 1; // Base case: Reached the destination node
3641
}
3742

3843
visited[u] = true; // Mark the current node as visited
39-
int path_count = 0; // Count of all paths from `u` to `v`
44+
std::uint32_t path_count = 0; // Count of all paths from `u` to `v`
4045

41-
for (int i = 0; i < n; i++) {
46+
for (std::uint32_t i = 0; i < n; i++) {
4247
if (A[u][i] == 1 && !visited[i]) { // Check if there is an edge and the node is not visited
4348
path_count += count_paths_dfs(A, i, v, n, visited); // Recursively explore paths from `i` to `v`
4449
}
@@ -58,7 +63,10 @@ namespace graph {
5863
* @param n the number of nodes in the graph
5964
* @returns the number of paths from node `u` to node `v`
6065
*/
61-
int count_paths(const std::vector<std::vector<unsigned int>>& A, int u, int v, int n) {
66+
std::uint32_t count_paths(const std::vector<std::vector<std::uint32_t>>& A,
67+
std::uint32_t u,
68+
std::uint32_t v,
69+
std::uint32_t n) {
6270
std::vector<bool> visited(n, false); // Initialize a visited vector for tracking nodes
6371
return count_paths_dfs(A, u, v, n, visited);
6472
}
@@ -71,43 +79,43 @@ namespace graph {
7179
*/
7280
static void test() {
7381
// Test case 1: Simple directed graph with multiple paths
74-
std::vector<std::vector<unsigned int>> graph1 = {
82+
std::vector<std::vector<std::uint32_t>> graph1 = {
7583
{0, 1, 0, 1, 0},
7684
{0, 0, 1, 0, 1},
7785
{0, 0, 0, 0, 1},
7886
{0, 0, 1, 0, 0},
7987
{0, 0, 0, 0, 0}
8088
};
81-
int n1 = 5, u1 = 0, v1 = 4;
89+
std::uint32_t n1 = 5, u1 = 0, v1 = 4;
8290
assert(graph::count_paths(graph1, u1, v1, n1) == 3); // There are 3 paths from node 0 to 4
8391

8492
// Test case 2: No possible path (disconnected graph)
85-
std::vector<std::vector<unsigned int>> graph2 = {
93+
std::vector<std::vector<std::uint32_t>> graph2 = {
8694
{0, 1, 0, 0, 0},
8795
{0, 0, 0, 0, 0},
8896
{0, 0, 0, 0, 1},
8997
{0, 0, 1, 0, 0},
9098
{0, 0, 0, 0, 0}
9199
};
92-
int n2 = 5, u2 = 0, v2 = 4;
100+
std::uint32_t n2 = 5, u2 = 0, v2 = 4;
93101
assert(graph::count_paths(graph2, u2, v2, n2) == 0); // No path from node 0 to 4
94102

95103
// Test case 3: Cyclic graph with multiple paths
96-
std::vector<std::vector<unsigned int>> graph3 = {
104+
std::vector<std::vector<std::uint32_t>> graph3 = {
97105
{0, 1, 0, 0, 0},
98106
{0, 0, 1, 1, 0},
99107
{1, 0, 0, 0, 1},
100108
{0, 0, 1, 0, 1},
101109
{0, 0, 0, 0, 0}
102110
};
103-
int n3 = 5, u3 = 0, v3 = 4;
111+
std::uint32_t n3 = 5, u3 = 0, v3 = 4;
104112
assert(graph::count_paths(graph3, u3, v3, n3) == 3); // There are 3 paths from node 0 to 4
105113

106114
// Test case 4: Single node graph (self-loop)
107-
std::vector<std::vector<unsigned int>> graph4 = {
115+
std::vector<std::vector<std::uint32_t>> graph4 = {
108116
{0}
109117
};
110-
int n4 = 1, u4 = 0, v4 = 0;
118+
std::uint32_t n4 = 1, u4 = 0, v4 = 0;
111119
assert(graph::count_paths(graph4, u4, v4, n4) == 1); // There is self-loop, so 1 path from node 0 to 0
112120

113121
std::cout << "All tests have successfully passed!\n";

0 commit comments

Comments
 (0)