阳光跑
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

本学期的阳光跑刚好在今天结束,Bezime 刚好差一次达标。今天,TGSTY 打算蹲点捕捉 Bezime 会在哪里跑完阳光跑。
校园内的地形可以简化为 n 个节点,m 条边的有向图1,节点编号为 1,2,3,\dots,n,每条边的长度均为 1 个单位长度(不一定连通2,可能有重边3与自环4)。
Bezime 将从某个节点出发,然后跑固定的距离,最终停在某个节点。
由于有向图可能存在死路,导致阳光跑可能因为距离不够而跑步失败,因此 Bezime 不会往完不成阳光跑的地方跑。
TGSTY 有 T 次猜想,你需要帮忙回答问题:
每次 TGSTY 会猜测如果 Bezime 从 x 号节点出发,阳光跑要求跑 k 个单位长度,那么他可能会在哪些节点结束阳光跑。
  • 输出节点个数 sum,并按顺序输出这些节点的编号;
  • 特殊的,如果从 x 号节点出发不可能完成阳光跑,那么输出一个 0 即可。
有向图1:由一些点与一些边组成,边的方向是单向的,这样的一条边只能沿着边的方向行走,无法从此边返回。
连通2:图内所有点之间都有边直接或间接相连,不考虑边的方向。
重边3:‌同一对顶点之间方向相同的两条或以上边。
自环4:自环是出发点与到达点相同的边。

输入描述:

第一行三个整数 n,m,T(1\le n,T\le 100,1\le m\le 10^4)

接下来 m 行,每行两个正整数 u,v(1\le u,v\le n),代表有一条单向边,方向为从 u 号节点指向 v 号节点,长度均为 1

接下来 T 行,每行两个正整数 x,k(1\le x\le n,1\le k\le 10^9),代表询问的出发节点与跑步距离。

输出描述:

输出共 T 行,对应每个询问:

对于每行,开头输出一个整数 sum,代表可能的终点个数,接下来从小到大输出 sum 个正整数,表示节点的编号;

若不存在这样的节点,只输出一个 0 即可。
示例1

输入

复制
4 3 3
1 2
2 3
3 4
1 2
2 2
3 2

输出

复制
1 3
1 4
0
示例2

输入

复制
4 5 3
1 2
2 3
3 4
4 1
1 3
1 2
2 2
4 10

输出

复制
2 3 4
1 4
4 1 2 3 4