RE求助
查看原帖
RE求助
775277
xiongzecheng楼主2023/8/4 19:42
#include<bits/stdc++.h>
#define ll long long
#define N 200005
using namespace std;
ll n,p[N],q[N],fir[N],fa[N],si[N],da[N]={0,1,3},ans=1;
inline ll findfa(ll x){
	return x==fa[x]?x:fa[x]=findfa(fa[x]);
}
ll he(ll u,ll v){
	ll x=findfa(u),y=findfa(v);
	if(x!=y){
		fa[x]=y;si[y]+=si[x];
	}
}
int main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)si[i]=1,fa[i]=i;
	for(int i=3;i<=n;i++)da[i]=(da[i-1]+da[i-2])%998244353;
	for(int i=1;i<=n;i++){
		scanf("%lld",&p[i]);fir[p[i]]=i;
	}
	for(int i=1;i<=n;i++){
		scanf("%lld",&q[i]);
		he(fir[q[i]],i);
	}
	for(int i=1;i<=n;i++)
		if(fa[i]==i)ans=ans*da[si[i]]%998244353;
	printf("%lld\n",ans);
	return 0;
}

大佬们救救我!

2023/8/4 19:42
加载中...