#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;
}