/*深度优先搜索:
1、应该存放已访问过的结点在栈中,以便回溯
//我想错了,这里并不需要加入栈,因为我们用的是递归,
递归的本质就是一个栈吧~~
果然实践是检验真理的唯一标准
2、有visited[]数组标记是否访问过
*/
#include<iostream>
#include<vector>
using namespace std;
int arr_list[100][100],visited[100],n,m;
vector <int> v;
void dfs(int k){
for(int i=1;i<=m;i++){
if(arr_list[k][i]==1&&visited[i]==0){//有边的话并且没有访问过的话
visited[i]=1;
v.push_back(i);
cout<<i<<" i"<<endl;
dfs(i);
}
}
}
int main(){
int f,t; //n是边数,m是顶点数,默认为 1,2,3,....m
while(cin>>n>>m){
memset(arr_list,0,sizeof(arr_list));
memset(visited,0,sizeof(visited));
for(int i=0;i<n;i++){
cin>>f>>t;
arr_list[f][t]=1;
}
//假设从1开始
dfs(1);
visited[1]=1;
}
return 0;
}