Skip to content

Commit 8d65079

Browse files
committed
traversal
1 parent d5d1715 commit 8d65079

File tree

2 files changed

+98
-0
lines changed

2 files changed

+98
-0
lines changed

graph_traversal.c

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
//Will work only for graphs with no self loops
2+
3+
#include <stdio.h>
4+
5+
void bfs(int n, int a[20][20], int source, int visited[20], int e[20][2])
6+
{
7+
int f=0, r=-1, q[20];
8+
int u, v, k = 1;
9+
visited[source] = 1;
10+
r += 1;
11+
q[r] = source;
12+
while(f<=r)
13+
{
14+
u = q[f];
15+
f = f+1;
16+
for(v=1; v<=n; v++)
17+
{
18+
if(a[u][v]==1 && visited[v]==0)
19+
{
20+
visited[v] = 1;
21+
r += 1;
22+
q[r] = v;
23+
e[k][1] = u;
24+
e[k][2] = v;
25+
k = k+1;
26+
}
27+
}
28+
}
29+
30+
}
31+
32+
void dfs(int n, int a[20][20], int u, int visited[20], int e[20][2])
33+
{
34+
int v;
35+
static int k = 1;
36+
visited[u] = 1;
37+
for(v=1; v<=n; v++)
38+
{
39+
if(a[u][v] == 1 && visited[v] == 0)
40+
{
41+
e[k][1] = u;
42+
e[k][2] = v;
43+
k = k+1;
44+
dfs(n,a,v,visited,e);
45+
}
46+
}
47+
}
48+
49+
int main()
50+
{
51+
int i, j, n, visited[20], a[20][20], source, flag=0, choice, e[20][2];
52+
printf("Enter the number of vertices: ");
53+
scanf("%d", &n);
54+
printf("Enter the adjacency matrix: \n");
55+
for(i = 1; i<=n; i++)
56+
{
57+
for(j = 1; j<=n; j++)
58+
{
59+
scanf("%d", &a[i][j]);
60+
}
61+
}
62+
printf("Enter the source node: ");
63+
scanf("%d", &source);
64+
for(i=1; i<=n; i++)
65+
{
66+
visited[i] = 0;
67+
}
68+
69+
printf("Enter 1.BFS 2.DFS: ");
70+
scanf("%d", &choice);
71+
if(choice == 1)
72+
bfs(n, a, source, visited, e);
73+
else
74+
dfs(n, a, source, visited,e);
75+
76+
for(i=1; i<=n; i++)
77+
{
78+
if(visited[i] == 0)
79+
{
80+
flag = 1;
81+
printf("%d is not reachable.\n",i);
82+
}
83+
else
84+
printf("%d is reachable.\n", i);
85+
}
86+
if(flag == 1)
87+
{
88+
printf("Graph is not connected.\n");
89+
}
90+
else
91+
{
92+
printf("It is a connected graph.\n");
93+
printf("The Spanning tree is: \n");
94+
for(i = 1; i<=n-1; i++)
95+
printf("%d to %d\n",e[i][1],e[i][2]);
96+
}
97+
return 0 ;
98+
}

graph_traversal.exe

41.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)