// To implement depth first search (DFS)

#include <stdio.h>
#include <stdlib.h>
#define MAX 20

int adj[MAX][MAX];
int visit[MAX];
int nodes;

void dfs(int v){
    int i;
    visit[v] = 1;
    printf(" %d ",v);
    for( i=1; i<=nodes; i++)
        if( adj[v][i] == 1 && visit[i] == 0)
            dfs(i);
}

int main(){
    int a[MAX];
    int edges = 0;
    int s, d, i, v;

    printf("\n Enter total no of nodes (max. 20): ");
    scanf("%d", &nodes);
    printf("\n Enter total no of edges (max. %d): ", nodes*(nodes-1));
    scanf("%d", &edges);

    for( i=0; i<edges; i++){
        printf(" Enter edge no %d (src dest): ", i+1);
        scanf("%d %d", &s, &d);
        adj[s][d] = adj[d][s] = 1;
    }

    printf("\n Enter starting node for DFS : ");
    scanf("%d", &v);
    
    printf("\n\t DFS = ");
    for( i=1; i<=nodes; i++)
        visit[i] = 0;
    dfs( v);
    printf("\n ");
    
    system("pause");
    return 0;
}



Output