提交时间:2022-07-20 11:51:25
运行 ID: 52735
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=21; int n,a,b,p[N],m,q[N]; bool vis[N]; int calc() { int ans=n; for(int i=1; i<=n; ++i) if(!vis[i]) { --ans,vis[i]=true; for(int j=p[i]; j!=i; j=p[j])vis[j]=true; } return ans; } int main() { cout<<setprecision(20)<<fixed; scanf("%d%d%d",&n,&a,&b); for(int i=1; i<=n; ++i)scanf("%d",&p[i]); double ans=calc()*a; if(b>n*a) return cout<<ans<<endl,0; double x=1.0; for(int i=1; i*b<=ans; ++i) { x=x*0.1; double res=i*b+x*(a*n); ans=min(ans,res); } cout<<ans<<endl; return 0; }