问题 C: Pavel and barbecue 铺路和烧烤

内存限制:256 MB 时间限制:2 S
题面:传统 评测方式:文本比较 上传者:
提交:22 通过:17

题目描述

    CF 题目链接


帕维尔会做烧烤。有 n 串,它们排成一排地放在火盆上,每个串在 n 个位置中的一个。帕维尔希望每个烤串在两个方向的n个位置中的每一个位置煮一段时间:在最初指向的方向和相反的方向。
    帕维尔有一个计划:一个排列p和一个序列b1b2,...,bn,由零和一组成。每秒钟帕维尔在位置 i 上移动撇子到位置p,如果b等于 1 然后他将其反转。所以他希望每个烤串都能在两个方向上访问每个位置。
    不幸的是,并非每对排列 p 和序列 b 都适合 Pavel。给定排列 p 和给定序列 b 中元素的最小总数是多少,他需要更改以便每个串烧将访问 2n 个位置中的每一个?请注意,更改排列后也应保持排列。
    对于帕维尔来说没有问题,如果一些烤串在他结束做饭之前多次访问一些位置。换句话说,如果有一个整数 k (k≥2 n),则排列 p 和序列 b 适合他,因此在 k 秒后,每个串烧都会访问 2 n 个位置中的每一个。
    可以证明,对于任何n,都存在一些合适的排列p和序列b对。


输入格式

输入
第一行包含整数 n (1≤n≤2·105)− 串数。
第二行包含整数序列
p1p2,...,pn (1≤pn)− 排列,根据该排列,帕维尔想要移动烤串。
第三行包含一个序列
b1b2,...,bn由零和一组成,根据它,帕维尔想反转串。

输出格式

输出
打印单个整数− 给定排列 p 和给定序列 b 中元素的最小总数,他需要更改,以便每个串烧将访问 2n 个位置中的每一个。
例子
输入
4
4 3 2 1
0 1 1 1
输出
2
输入
3
2 3 1
0 0 0
输出
1

输入样例 复制

4
4 3 2 1
0 1 1 1

输出样例 复制

2
样例#2

输入样例 复制

3
2 3 1
0 0 0

输出样例 复制

1

数据范围与提示

在第一个示例中,Pavel 可以将排列更改为 4,3,1,2
在第二个示例中,Pavel 可以将 b 的任何元素更改为 1