题目要求从1号节点出发,k步之内能够到达哪些节点。这是一个典型的图遍历问题,我们可以使用广度优先搜索(BFS)来解决。
首先,我们需要创建一个队列,将1号节点放入队列,并将其标记为已访问。
然后,我们开始进行BFS。在每一轮中,我们首先获取当前队列的大小,这个大小就是当前步数可以到达的节点数量。然后,我们遍历这些节点,对于每一个节点,我们将其所有未访问过的邻居节点放入队列,并将这些邻居节点标记为已访问。在这个过程中,我们需要记录当前的步数,如果步数达到k,我们就停止遍历。
最后,我们输出所有被标记为已访问的节点,这些节点就是从1号节点出发,k步之内能够到达的所有节点
给定一个有向图,一共有n个节点以及n条边,问:从1号节点出发,k步之内能够到达哪些节点?
第一行两个整数n,k,表示节点的数量,以及最多走的步数
第二行n个整数ai,表示从i到ai有一条有向边
1≤n≤105
1≤k≤1018
1≤ai≤n
能到达的节点的编号,按从小到大的顺序输出。
输入
5 100
5 4 5 2 3
输出
1 3 5