DFS

 

#include <stdio.h>
int a[20][20], visited[20], n;
void dfs(int v)
{
    int i;
    visited[v] = 1;
    printf("Visited %d\n", v);
    for (i = 1; i <= n; i++)
    {
        if (a[v][i] && !visited[i])
        {
            printf(" %d->%d\n", v, i);
            dfs(i);
        }
    }
}

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

    printf("Enter number of vertices: ");
    scanf("%d", &n);

    for (i = 1; i <= n; i++)
    {
        visited[i] = 0;
        for (j = 1; j <= n; j++)
            a[i][j] = 0;
    }
    printf("Enter the adjacency matrix:\n");
    for (i = 1; i <= n; i++)
        for (j = 1; j <= n; j++)
            scanf("%d", &a[i][j]);
    printf("Enter the starting vertex (1 to %d): ", n);
    scanf("%d", &v);
    if (v < 1 || v > n)
    {
        printf("Invalid starting vertex.\n");
        return 1;
    }
    dfs(v);
    return 0;
}

Comments

Popular posts from this blog

SINGLE LINKED LIST by smd

CLL by smd

QUEUE USING ARRAYS by smd