#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