https://www.matiji.net/exam/brushquestion/28/4347/179CE77A7B772D15A8C00DD8198AAC74
题意:
n个人传消息, 编号为 i 的人拿到信后会将信传递给编号为 ti的人,如果 ti=0则表示自己收下,可能会出现循环的情况,输出不会出现循环传递的人编号异或值。
int main()
{
cin >> n;
for(int i = 1; i <= n; i ++) cin >> a[i];
int ans = 0;
for(int i = 1; i <= n; i ++)
{
int b = a[i];
for(int j = 0; j < n; j ++)//一个一个找,最多找n次
{
if(b == 0)//每次遇到0的时候说明不会出现循环的情况
{
ans ^= i;
break;
}
b = a[b];
}
}
cout << ans << endl;
return 0;
}