#P7847. Discovery of Cycles

Discovery of Cycles

题目描述

为了响应 8202 年奥运会,赛事主办城市 Quber City 计划建造一座宏伟的体育场。

这座体育场与通常带有环形跑道的传统体育场完全不同。按照设计方案,体育场中共有 nn 个服务点,以及连接这些服务点的 mm 条无向跑道。如此大胆的设计引起了全世界的关注,但同时也带来了巨大的建设成本。

因此,设计者正在尝试简化方案以降低成本。他们发现,最简单的方法是将这 mm 条跑道按照某种顺序排列,然后只保留排列中一段连续的跑道。由于只需修建部分跑道,便可以节省经费,大家都会很高兴——或许那些需要环形跑道进行比赛的长跑运动员除外。

一条环形路线从某个服务点出发,经过若干互不相同的服务点后,最终回到起点,并且使用过的所有跑道必须互不相同。

你的任务是编写一个程序,快速判断:当只选取跑道列表中的某一段连续跑道时,是否至少存在一条环形路线。

注意:不同编号的跑道可能连接同一对服务点。因此,两条连接相同服务点的不同跑道也可以构成一条长度为 22 的环形路线。

输入格式

第一行包含一个整数 TT1T101\le T\le 10),表示测试用例的数量。

对于每组测试用例:

第一行包含三个整数 n,m,qn,m,q1n,m,q3×1051\le n,m,q\le 3\times 10^5),分别表示服务点数量、原始方案中的跑道数量以及询问数量。

接下来 mm 行,第 ii 行包含两个整数 ui,viu_i,v_i1ui,vin1\le u_i,v_i\le nuiviu_i\ne v_i),表示第 ii 条无向跑道连接服务点 uiu_iviv_i

接下来 qq 行,每行包含两个整数 l,rl',r'1lrm1\le l'\le r'\le m)。真正的询问区间 [l,r][l,r] 按照下列方式计算:

  • lastans\mathrm{lastans} 表示上一次询问的答案。若上一次答案为 Yes,则 lastans=1\mathrm{lastans}=1;否则 lastans=0\mathrm{lastans}=0。在第一组询问前,lastans=0\mathrm{lastans}=0
  • $k_1=(l'\mathbin{\mathrm{xor}}\mathrm{lastans})\bmod m+1$;
  • $k_2=(r'\mathbin{\mathrm{xor}}\mathrm{lastans})\bmod m+1$;
  • l=min(k1,k2)l=\min(k_1,k_2)
  • r=max(k1,k2)r=\max(k_1,k_2)

其中,[l,r][l,r] 表示本次询问只保留编号位于该区间内的跑道,即:

(ul,vl),(ul+1,vl+1),,(ur,vr).(u_l,v_l),(u_{l+1},v_{l+1}),\ldots,(u_r,v_r).

保证所有测试用例满足:

$$\sum n\le 1.5\times 10^6,\qquad \sum m\le 1.5\times 10^6.$$

输出格式

对于每次询问:

  • 如果选中的跑道中至少存在一条环形路线,输出一行 Yes
  • 否则输出一行 No

样例输入

1
3 4 3
1 2
1 2
2 3
3 1
1 4
2 3
2 4

样例输出

Yes
No
Yes