#include <stdio.h>
#include <stdbool.h>
#define MAX 5
// Graph represented as adjacency matrix
int graph[MAX][MAX] = {
{0,1,1,0,0}, // neighbors of 0
{0,0,0,1,0}, // neighbors of 1
{0,0,0,0,1}, // neighbors of 2
{0,0,0,0,0}, // neighbors of 3
{0,0,0,0,0} // neighbors of 4
};
bool visited[MAX] = {false};
void dfs(int node) {
visited[node] = true; // mark current node visited
printf("%d ", node); // print visited node
for (int i = 0; i < MAX; i++) {
if (graph[node][i] == 1 && !visited[i]) {
dfs(i); // recursively visit neighbor
}
}
}
int main() {
dfs(0); // start DFS at node 0
printf("\n");
return 0;
}
visited[node] = true; // mark current node visited
mark current node as visited to avoid revisiting
printf("%d ", node); // print visited node
output the node as we visit it
for (int i = 0; i < MAX; i++) {
check all possible neighbors of current node
if (graph[node][i] == 1 && !visited[i]) {
if neighbor exists and not visited, explore it
dfs(i); // recursively visit neighbor
go deep into neighbor node