import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; /* * 广度优先搜索: * 1、找到源节点,将它的临接点入队列 * 2、 */ public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int edge,f,t,node; Queue<Integer> q = new LinkedList<Integer>(); int map[][]=new int[21][21]; int [] visited=new int[21]; while(sc.hasNext()){ edge=sc.nextInt(); //边数 node=sc.nextInt(); //顶点数 for(int i=0;i<=edge;i++) visited[i]=0; for(int i=0;i<=edge;i++) for(int j=0;j<=edge;j++) map[i][j]=0; for(int i=1;i<=edge;i++){ f=sc.nextInt(); t=sc.nextInt(); map[f][t]=1; //f->t 这条边存在 } //选择1作为源点 q.offer(1); visited[1]=1; int s; while(!q.isEmpty()){ s=q.poll(); System.out.println(s); for(int j=1;j<=node;j++){ if(map[s][j]==1&&s!=j&&visited[j]!=1){ q.offer(j); visited[j]=1; } } } } } }