Мне дано задание напечатать последовательность вершин в DFS. Я не вижу ничего плохого в моем коде, но он ничего не печатает.
Ниже показано, как должен быть вывод.
Input Output
6 Vertex 1 is visited
1 4 Vertex 4 is visited
1 6 Vertex 2 is visited
2 4 Vertex 5 is visited
2 5 Vertex 6 is visited
2 6 Vertex 3 is visited
3 4
Первые 6 здесь - это количество вершин.
Вот мой фрагмент кода:
#include <stdio.h>
#include <string.h>
#define MAX 100
int m[MAX][MAX], used[MAX];
int i, n, a, b;
void dfs(int v)
{
int i;
// Mark the vertex that is visited
used[v] = 1;
printf("Vertex %d is visited\n",v);
// looking for an edge, through which you can get to the vertex that is not visited
for(i = 1; i <= n; i++)
if (m[v][i] && !used[i]) dfs(i);
}
int main(void)
{
// read input data
scanf("%d",&n);
while(scanf("%d %d",&a,&b) == 2)
m[a][b] = m[b][a] = 1;
//run dfs from the top 1
dfs(1);
return 0;
}