Skip to main content

20. Write a c program for DFS and BFS technique.

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

#define MAX 100

void breadthFirstSearch(int adj[][MAX], int visited[], int start, int n) {
int queue[MAX], front = 0, rear = -1;

visited[start] = true;
queue[++rear] = start;

while (front <= rear) {
int current = queue[front++];

printf("%d ", current);

for (int i = 0; i < n; i++) {
if (adj[current][i] == 1 && !visited[i]) {
visited[i] = true;
queue[++rear] = i;
}
}
}
}

void depthFirstSearch(int adj[][MAX], int visited[], int current, int n) {
visited[current] = true;

printf("%d ", current);

for (int i = 0; i < n; i++) {
if (adj[current][i] == 1 && !visited[i]) {
depthFirstSearch(adj, visited, i, n);
}
}
}

int main() {
int n, start;
int adj[MAX][MAX] = {{0}};
int visited[MAX] = {0};

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

printf("Enter the adjacency matrix:\\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &adj[i][j]);
}
}

printf("Enter the start vertex: ");
scanf("%d", &start);

printf("BFS traversal: ");
breadthFirstSearch(adj, visited, start, n);

printf("\\nDFS traversal: ");
visited[MAX] = {0};
depthFirstSearch(adj, visited, start, n);

return 0;
}

Output

d