#include <stdio.h>
#include <conio.h>
int graph[10][10],visited[10],view[10],queue[10];
int front = 0, rear = 0;
int n;
void dfs(int v) {
int j;
printf("%d ", v);
visited[v] = 1;
for (j = 1; j <= n; j++) {
if (graph[v][j] == 1 && visited[j] == 0) {
dfs(j);
}
}
}
void bfs() {
int v, j;
if (front == rear)
return;
v = queue[front++];
printf("%d ", v);
view[v] = 1;
for (j = 1; j <= n; j++) {
if (graph[v][j] == 1 && view[j] == 0 && visited[j] == 0) {
queue[rear++] = j;
visited[j] = 1;
}
}
bfs();
}
void main() {
int m, i, j, k, v;
clrscr();
printf("ENTER NO OF VERTICES: ");
scanf("%d", &n);
printf("ENTER NO OF EDGES: ");
scanf("%d", &m);
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
graph[i][j] = 0;
printf("\nENTER EDGES (u v):\n");
for (k = 1; k <= m; k++) {
scanf("%d %d", &i, &j);
graph[i][j] = graph[j][i] = 1;
}
for (i = 1; i <= n; i++)
visited[i] = 0;
printf("\nRECURSIVE DFS ORDER:\n");
dfs(1);
for (i = 1; i <= n; i++) {
visited[i] = 0;
view[i] = 0;
}
front = rear = 0;
visited[1] = 1;
queue[rear++] = 1;
printf("\n\nRECURSIVE BFS ORDER:\n");
bfs();
getch();
}