当前位置 博文首页 > u012938183的博客:图的遍历-深度优先搜索+数组模拟邻接表
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n, m;
int head[100010];
int to[100010];
int nxt[100010];
bool vis[100010];
int tmp = 0;
void addEdge(int x, int y)
{
to[tmp] = y;
nxt[tmp] = head[x];
head[x] = tmp;
tmp ++;
}
void dfs(int x)
{
printf("%d ", x);
vis[x] = true;
for(int i = head[x]; i != -1; i = nxt[i])
{
if(! vis[to[i]])
dfs(to[i]);
}
}
int main()
{
memset(head, -1, sizeof head);
scanf("%d%d", &n, &m);
for(int i = 1; i <= m; i ++)
{
int x, y;
scanf("%d%d", &x, &y);
addEdge(x, y);
addEdge(y, x);
}
dfs(1);
return 0;
}