DFS(深度优先搜索)是一种图形遍历算法,它通过沿着图形的深度遍历图形的节点,尽可能深的搜索整张图形。与之相对的是广度优先搜索(BFS)。
给定一个无向图,要求使用DFS算法遍历图中的所有节点,并输出遍历的顺序。在遍历过程中,对于一个节点的邻接点,应该优先遍历编号小的节点。
输入格式包含多组数据,每组数据给出一个图的信息。每组数据的第一行包含三个整数n、e、s,分别表示图中节点的数量、边的数量、遍历的起点。接下来的e行,每行给出两个整数u、v,表示图中有一条无向边连接u、v两个节点。
对于每组数据,输出一行,包含n个整数,表示DFS遍历的结果。数字之间用空格隔开。
下面是一个简单的DFS代码示例,假设已经构建好了图的邻接表存储结构:
``` void DFS(int u) { // 标记节点u已访问 visited[u] = true; // 遍历节点u的所有邻接点 for (int v : adj[u]) { // 如果节点v未被访