题目:
题解:
a[i]和b[i]对应的值无论怎么移动都是一一对应的
目前想的还不是很明白,过两天想明白了过来更新
下面的代码超时
<pre name="code" class="html">#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
int a[100001];
int b[100001];
int c[100001];
int d[100001];
int t,n,x,ans;
int main()
{
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
d[i]=0;
}
for(int i=1;i<=n;i++)
{
cin>>b[i];
}
for(int i=1;i<=n;i++)
{
c[a[i]]=b[i];
}
ans=n;
for(int i=1;i<=n;i++)
{
int x=i;
if(d[x]) continue;
if(c[x]!=x)
{
ans--;
while(!d[x])
{
d[x]=1;
x=c[x];
}
}
}
printf("%d\n",ans);
}
}