皮卡丘所生活的国家有 n 个城市,可以分别用

表示;一共有 m 条单行道连接着这 n 个城市。每条单行道 (u,v) 表示生活在城市 u 的神奇宝贝可以到达城市 v,但生活在城市 v 的神奇宝贝
不能通过这条单行道到达城市 u 。
皮卡丘计划了许多旅行方案:每个旅行方案 [u,v] 表示城市 u 是出发站,城市 v 是终点站。但有些旅行方案存在缺陷,即从出发站出发后无法到达终点站,这样的方案我们称作为不好的(
Bad)方案,否则称为好的(
Good)方案。
聪明的你能否帮助皮卡丘判断每一个旅行方案是好是坏呢?
除样例外,所有的测试数据中的道路和方案均随机生成。生成测试数据的 C++ 代码如下:
unsigned int seed;
unsigned int xorshift32() {
unsigned int x = seed;
x ^= x << 13;
x ^= x >> 17;
x ^= x << 5;
return seed = x;
}
void gen(int n, int m, int q) {
// n: number of vertices
// m: number of edges
// q: number of queries
// initialize the seed with a random value.
cout << n << ' ' << m << endl;
for (int i = 0, u, v; i < m; i++) {
u = xorshift32() % n;
v = xorshift32() % n;
cout << u << ' ' << v << endl;
}
cout << q << endl;
for (int i = 0, u, v; i < q; i++) {
u = xorshift32() % n;
v = xorshift32() % n;
cout << u << ' ' << v << endl;
}
}