#include <bits/stdc++.h>
using namespace std;
int n, m, s, x, y, space = 0, cnt = 0;
bool edge, G[1001][1001]{false}, vis[1001]{false};
void dfs(int u){
// 标记已访问并统计节点数
vis[u] = true, cnt++;
// 初次访问结点输出
cout << (space++ ? " " : "") << u;
// 小编号优先访问
for(int v = 1; v <= n; v++){
// 邻接点未访问 && 边存在
if(vis[v] == false && G[u][v] == true){
dfs(v);
// 结束对邻接点访问 回到岔道口输出
cout << " " << u;
}
}
}
int main() {
cin >> n >> m >> s;
for(int i = 1; i <= m; i++){
cin >> x >> y;
G[x][y] = G[y][x] = true;
}
dfs(s);
// 访问部分节点 未全部点亮
cout << (cnt == n ? "" : " 0");
}
10-18
2456
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-27
938
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-10