图的深度优先遍历(《啊哈,算法》模板)
作者:
boxyit
,
2020-08-04 11:02:47
,
所有人可见
,
阅读 812
C语言版本代码,采用邻接矩阵储存无向图
#include <stdio.h>
int book[110], sum, n, e[110][110];
void dfs(int cur)
{
int i;
printf("%d ", cur);
sum++;
if(sum == n)
return ;
for(i = 1; i <= n; i++)
{
if(e[cur][i] == 1 && book[i] == 0)
{
book[i] = 1;
dfs(i);
}
}
return;
}
int main()
{
int i, j, a, b;
scanf("%d", &n);
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
{
if(i == j)
e[i][j] = 0;
else
e[i][j] = 99999999;
}
}
for(i = 1; i <= n; i++)
{
scanf("%d %d", &a, &b);
e[a][b] = 1;
e[b][a] = 1;
}
book[1] = 1;
dfs(1);
return 0;
}
测试用例:
5
1 2
1 3
1 5
2 4
3 5
输出:
1 2 4 3 5