迷失的时空旅行者

题目描述:

给定一个无向图,总共有 \(n\) 个点,每个点有一条出边,你最开始在 \(x\) 号点,每一天你会沿着你当前所在节点的出边走到下一个节点 \(a_x\)。

你被困在了这个无限的循环当中,现在你的时间是无限的,也就是你会不停地每天往下一个节点走去。

最开始你位于 \(x\) 号点。你想知道你最晚持续到多少天,能够保证不存在某一天你经过的城市是你未来将会经过无限次的城市。

祝你好运,时空旅行者!愿你找到回家的道路。

输入格式:

第一行输入一个正整数 \(T\) (\(1\le T\le 2\times 10^5\)),表示总共有 \(T\) 组测试数据。

对于每一组测试数据,接下来给出输入格式。

第一行输入两个正整数 \(n,x\) (\(1\le n \le 2\times 10^5\),\(1\le x \le n\)),表示无向图总共有 \(n\) 个节点,初始在 \(x\) 号点。

第二行输入 \(n\) 个正整数 \(a_i\) (\(1\le a_i \le n\)),其中 \(a_i\) 表示 \(i\) 号节点出边所指向的节点。

其中保证 \(\sum n \le 2\times 10^5\)。

输出格式:

输出总共 \(T\) 行,每行输出一个整数表示当前测试数据的答案。假如说最开始就在你未来将会经过无限次的城市上,则输出 0。

数据范围:

- 对于 \(20\%\) 的数据有:\(1\le n\le 10,\sum n\le 100\)。
- 对于 \(40\%\) 的数据有:\(1\le n\le 500,\sum n\le 5000\)。
- 对于 \(60\%\) 的数据有:\(1\le n\le 5000,\sum n\le 50000\)。
- 对于 \(100\%\) 的数据有:\(1\le n\le 2\times 10^5,\sum n\le 2\times 10^5\)。

样例输入:

3
7 4
6 1 2 6 1 3 2
6 2
2 1 6 4 6 2
2 2
2 2

样例输出:

1
0
0
时间限制: 1000ms
空间限制: 512MB