dfs

dfs

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int v;

void dfsrec(int m[][v], int s, bool visited[])
{
    int j;
    visited[s] = true;
    printf(“%d “, s + 1);
    for (j = 0; j < v; j++)
    {
        if (m[s][j] == 1 && !visited[j])
            dfsrec(m, j, visited);
    }
}

int main()
{
    int i, j, s;

    printf(“Enter the number of vertices:”);
    scanf(“%d”, &v);
    int m[v][v];

    printf(“Enter the adjacency matrix:\n”);
    for (i = 0; i < v; i++)
    {
        for (j = 0; j < v; j++)
        {
            scanf(“%d”, &m[i][j]);
        }
    }

    printf(“Enter the source vertex to start:”);
    scanf(“%d”, &s);

    bool visited[v];
    for (i = 0; i < v; i++)
    {
        visited[i] = false;
    }

    printf(“\nDepth first search of given graph is:\n”);
    dfsrec(m, s – 1, visited);

    // Check for unreachable vertices
    for (i = 0; i < v; i++)
    {
        if (!visited[i])
        {
            printf(“\nVertex %d is not reachable\n”, i + 1);
        }
    }

    return 0;
}

Scroll to Top