记录编号 49063 评测结果 AWWWWWWWWW
题目名称 952.[河南省队2012] 电脑幽魂 最终得分 10
用户昵称 skyfisherman 是否通过 未通过
代码语言 C++ 运行时间 2.990 s
提交时间 2012-11-07 11:53:49 内存使用 15.54 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>

using namespace std;

int n,a[1000001],b[1000001],ma[1000001];
bool visited[1000001];

int main()
{
	freopen("ghost.in","r",stdin);
	freopen("ghost.out","w",stdout);	
	
	cin>>n;
	
	for(int i=1;i<=n;i++)
	{
		scanf("%d",a+i);	
		ma[a[i]]=i;
	}	
	for(int i=1;i<=n;i++)
	{
		scanf("%d",b+i);	
	}	
	
	
	int res=0;
	for(int i=1;i<=n;i++)
	{
		if(visited[i]||a[i]==b[i])continue;
		
		int j=i,cnt=-1,min=1000000000;
		do
		{
			visited[j]=1;			
			res+=b[j];
			if(b[j]<min)min=b[j];
			j=ma[b[j]];
			cnt++;
		}while(b[j]!=a[i]);
		visited[j]=1;
		res+=b[j];
		if(b[j]<min)min=b[j];
		
		res+=cnt*min;
	}
	
	cout<<res<<endl;
	
	return 0;
}