这是一个典型的函数图问题。
对于每个房间 i,下一次一定去 ai,因此整张图中每个点出度都为 1,图的结构一定是:
在一个由 n 个房间组成的迷宫中,每个房间都有一个传送装置,从房间 i 会立即被传送到房间 ai。你选择了一个起点房间,每次进入房间时都会累积积分:如果是第 t 次进入房间 x(无论全局次数),则此次访问获得 timesx 分。请注意,初始站上起点房间也算作第一次进入。
现有 q 个独立的询问,每个询问给出起点房间编号 p 和总进入次数 k(包括第一次进入起点)。你需要对每个询问计算经过 k 次进入后获得的总积分,并将结果对 109+7 取模。
约束条件:房间总数 n 与询问个数 q 不超过 2imes105;数组 ai 中的每个目标均在 1 到 n 之间;每个询问的总进入次数 k 不超过 109。
第一行包含两个整数 n 和 q。 第二行包含 n 个整数 a1,a2,…,an,表示每个房间的传送目标。 接下来 q 行,每行包含两个整数 p,k,表示一次询问的起点房间和总进入次数。
对于每个询问,输出一行一个整数,表示该询问的总积分对 109+7 取模后的结果。
输入
3 3
2 3 1
1 1
1 5
2 3
输出
1
12
6
说明
迷宫有 3 个房间,传送规则为 1→2, 2→3, 3→1,形成一个长度为 3 的循环。
1:起点 p=1,总进入次数 k=1。仅进入房间 1 一次,积分 1imes1=1。2:起点 p=1,k=5。路径为 1(第 1 次)→2(第 1 次)→3(第 1 次)→1(第 2 次)→2(第 2 次)。积分分别为 1imes1=1, 2imes1=2, 3imes1=3, 1imes2=2, 2imes2=4,总和 1+2+3+2+4=12。3:起点 p=2,k=3。路径为 2(第 1 次)→3(第 1 次)→1(第 1 次)。积分 2imes1+3imes1+1imes1=6。输入
2 2
2 2
1 4
2 2
输出
13
6
说明
迷宫有 2 个房间,传送规则为 1→2, 2→2。房间 2 是一个自环,一旦进入就会一直停留在房间 2。
1:起点 p=1,k=4。路径为 1(第 1 次)→2(第 1 次)→2(第 2 次)→2(第 3 次)。积分 = 1imes1+2imes1+2imes2+2imes3=1+2+4+6=13。2:起点 p=2,k=2。路径为 2(第 1 次)→2(第 2 次)。积分 = 2imes1+2imes2=6。输入
1 2
1
1 1
1 1000000000
输出
1
21
说明
迷宫只有 1 个房间,传送规则为 1→1。每次进入都是房间 1,第 t 次进入获得 times1=t 分。总积分即为 1+2+⋯+k=2k(k+1)。
1:p=1,k=1,积分 =1。2:p=1,k=109。需要计算 2109imes(109+1)mod(109+7)。令 M=109+7,有 109≡−7(modM),因此分子 ≡(−7)imes(−6)=42,除以 2 得 21modM。故输出 21。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册