/*
图的邻接矩阵表示法的dfs
*/
#include<iostream>
#include<stdio.h>
using namespace std;
#define max 10000
int vexnum ;
int map[100][100];
int isVisited[100];
void shuru()
{
int a,b;
while(scanf("%d %d",&a,&b))
{
if(a==0&&b==0)
return ;
else
{
map[a][b]=1;
map[b][a]=1;
}
}
}
void dfs(int v)
{
int i=0;
isVisited[v]=1;
printf("%d\n",v);
for(i=v;i<=vexnum;i++)
{
if(map[v][i]==max)
continue;
if(!isVisited[i])
dfs(i);
}
}
int main()
{
//初始化
int i,j;
for(i=0;i<100;i++)
{
isVisited[i]=0;
for(j=0;j<100;j++)
{
map[i][j]=max;
}
}
scanf("%d",&vexnum);
shuru();
dfs(1);
return 0;
}
/*
1
/ | \
/ | \
/ | \
2----4----3
/ \
5 \
6-----8
/
/
7
输入数据是
8
1 2
1 4
1 3
2 4
2 5
4 6
6 7
6 8
3 4
0 0
输出数据是
1 2 4 6 7 8 5 3
*/
/*
1 在这个函数当中使用到啦函数的递归调用。
调用完一个函数以后,就返回到前一级函数当中去。
2 在for循环当中如果==max应该是继续
*/