这是一个无向图的深度优先搜索
//这是一个无向图的深度优先搜索
#include<stdio.h>
int book[101] = { 0 };
int e[101][101] = { 0 };
int sum = 0;
int n = 0;
int d[101] = { 0 };
void dfs(int cur)//当前顶点的编号
{
printf("%d ", cur);
sum++;
if (sum == n)//如果所有顶点都访问过直接退出
{
return ;
}
for (int i = 1; i <= n; i++)
{
if (e[cur][i] == 1 && 0 == book[i])
{
book[i] = 1;//标记顶点i已经访问过
dfs(i);//从顶点i出发
}
}
return ;
}
int main(void)
{
int i = 0;
int j = 0;
int m = 0;
int a = 0;
int b = 0;
scanf("%d%d", &n, & m);
//初始化二维矩阵
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
if (i == j)
{
e[i][j] = 0;
}
else
{
e[i][j] = 99999999;//设99999999为无穷
}
}
}
//读入顶点之间的边
for (i = 1; i <= m; i++)
{
scanf("%d%d", &a, &b);
d[a]++;
d[b]++;
e[a][b] = 1;//这是一个无向图
e[b][a] = 1;
}
book[1] = 1;
dfs(1);
printf("\n");
for (i = 1; i <=n; i++)
{
printf("%d ", d[i]);
}
return 0;
}
这是一个无向图的深度优先搜索
https://6jackjiang.github.io/2021/11/18/categories/C语言/这是一个无向图的深度优先搜索/