Free Figurines Gym

来源:互联网 发布:豆瓣评分算法 编辑:程序博客网 时间:2024/05/29 03:50

Description
俄罗斯套娃,给出一个初始状态和终止状态,问至少需要多少步操作才能实现状态转化
Input
第一行一整数n表示套娃个数(编号也表示规格),之后n个整数a[i]表示初始状态,如果a[i]=0说明这个套娃单独存在,否则i套在a[i]里,最后n个整数b[i]表示终止状态(1<=n<=1e5)
Output
输出最少操作数
Sample Input
7
3 5 4 0 7 0 0
3 5 0 6 7 0 0
Sample Output
2

int a[N]; int b[N];int vis[N];int main(){    int n;    while(~sf("%d",&n)){        mem(vis,0);        int ans=0;        rep(i,1,n){sf("%d",&a[i]);if(a[i])ans++,vis[a[i]]=1;}        rep(i,1,n){sf("%d",&b[i]);if(b[i])ans++,vis[b[i]]=1;}        rep(i,1,n){            if(!vis[i]){                int x=i;                while(a[x]&&b[x]&&a[x]==b[x]){                    ans-=2;x=a[x];                }            }        }        pf("%d\n",ans);    }}
原创粉丝点击