#include<stdio.h>
int book[101],sum,n,e[101][101];
void dfs(int cur) //cur是当前所在顶点的编号
{
int i;
printf("%d",cur);
sum++; //每访问一个顶点,sum就加1
if(sum==n)
return; //所有的顶点都已经访问过则直接退出
for(i=1;i<=n;i++) //从1号顶点到n号顶点一次尝试,看哪些顶点与当前顶点cur有边相连
{
if(e[cur][i]==1 && book[i]==0) //判断当前顶点cur到顶点i是否有边,并判断顶点i是否访问过
{
book[i] = 1; //标记顶点i已经访问过
dfs(i); //从顶点i再出发继续遍历
}
}
return;
}
int main()
{
int i,j,m,a,b;
scanf("%d %d ",&n,&m);
for(i=1;i<=n;i++) //初始化二维矩阵
for(j=1;j<=m;j++)
if(i==j)
e[i][j] = 0;
else
e[i][j] = 999999999; //假设为正无穷
for(i=1;i<=m;i++) //读入顶点之间的边
{
scanf("%d %d",&a,&b);
e[a][b] = 1;
e[b][a] = 1; //无向图,将e[b][a]也赋值为1
}
book[1]=1; //从1号出发顶点已访问
dfs(1); //从1号顶点开始遍历
getchar();getchar();
return 0;
}