DFS
#include <stdio.h>
int a[20][20], visited[20], n;
void dfs(int v)
{
int i;
visited[v] = 1;
printf("Visited %d\n", v);
for (i = 1; i <= n; i++)
{
if (a[v][i] && !visited[i])
{
printf(" %d->%d\n", v, i);
dfs(i);
}
}
}
int main()
{
int i, j, v;
printf("Enter number of vertices: ");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
visited[i] = 0;
for (j = 1; j <= n; j++)
a[i][j] = 0;
}
printf("Enter the adjacency matrix:\n");
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
scanf("%d", &a[i][j]);
printf("Enter the starting vertex (1 to %d): ", n);
scanf("%d", &v);
if (v < 1 || v > n)
{
printf("Invalid starting vertex.\n");
return 1;
}
dfs(v);
return 0;
}
int a[20][20], visited[20], n;
void dfs(int v)
{
int i;
visited[v] = 1;
printf("Visited %d\n", v);
for (i = 1; i <= n; i++)
{
if (a[v][i] && !visited[i])
{
printf(" %d->%d\n", v, i);
dfs(i);
}
}
}
int main()
{
int i, j, v;
printf("Enter number of vertices: ");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
visited[i] = 0;
for (j = 1; j <= n; j++)
a[i][j] = 0;
}
printf("Enter the adjacency matrix:\n");
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
scanf("%d", &a[i][j]);
printf("Enter the starting vertex (1 to %d): ", n);
scanf("%d", &v);
if (v < 1 || v > n)
{
printf("Invalid starting vertex.\n");
return 1;
}
dfs(v);
return 0;
}
Comments
Post a Comment