都是把每个数换成另一个,为什么367E的ST表做法在这里就不行了呢?
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,k,a[200005],st[200005][65],ans[200005];
signed main () {
cin>>n>>k;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
st[i][0]=a[i];
ans[i]=i;
}
for(int i=1;i<=60;i++){
for(int j=1;j<=n;j++)st[j][i]=st[st[j][i-1]][i-1];
}
for(int i=0;i<=60;i++){
if((k>>i)&1){
for(int j=1;j<=n;j++)ans[j]=st[ans[j]][i];
}
}
for(int i=1;i<=n;i++)printf("%lld ",a[ans[i]]);
return 0;
}