6. DFS – Depth First Search
#include < stdio.h>
int graph[10][10], visited[10], n;
void DFS(int v)
{
int i;
printf("%d ", v + 1);
visited[v] = 1;
for(i = 0; i < n; i++)
{
if(graph[v][i] == 1 && visited[i] == 0)
{
DFS(i);
}
}
}
int main()
{
int i, j, start;
printf("Enter the number of vertices: ");
scanf("%d", &n);
printf("Enter the adjacency matrix:\n");
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
scanf("%d", &graph[i][j]);
}
}
for(i = 0; i < n; i++)
visited[i] = 0;
printf("Enter the starting vertex: ");
scanf("%d", &start);
printf("DFS Traversal: ");
DFS(start - 1);
return 0;
}
Example input:
5
0 1 1 0 0
1 0 0 1 1
1 0 0 0 0
0 1 0 0 0
0 1 0 0 0
1
Output:
DFS Traversal: 1 2 4 5 3