题目描述
一个有n个结点的无向连通图,这些结点以编号:1、2、……n进行编号,现给出结点间的连接关系。请以结点1为起点,按dfs(深度优先搜索)、优先访问小编号结点的顺序遍历并输出该图。
输入
第一行为两整数,n和e,表示n个顶点,e条边。(2<=n,e<=10)
以下e行每行两个数,表示两个结点是联通的。
输出
只有一行,为按照优先访问小编号结点的dfs的结果。
样例输入
5 7 1 2 1 3 1 4 2 4 2 5 3 5 4 5
样例输出
1 2 4 5 3
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define N 15
int n,e,x,y;
bool g[N][N];
bool k[N];
void dfs(int x){
k[x]=true;
printf("%d ",x);
for(int i=1;i<=n;i++){
if(!k[i]&&g[x][i]){
dfs(i);
}
}
return;
}
int main(){
scanf("%d%d",&n,&e);
for(int i=0;i<e;i++){
scanf("%d%d",&x,&y);
g[x][y]=1;
g[y][x]=1;
}
dfs(1);
return 0;
}