这道题可以看成一个函数图问题。
每个房间 i 都只有一条出边,指向房间 ai。在这种图中,每个连通块最终一定会进入一个环。
苍蝇无论从某个连通块中的哪个房间出发,最后都会进入该连通块唯一的环,并一直在环上移动。
因此:
现在多多宿舍区有 n 个房间(编号 1 到 n)和一只苍蝇,多多准备通过在房间放置粘蝇板的方式进行捕蝇,如果要在房间 i 捕捉到苍蝇,需要在该房间放置 Ci 个粘蝇板。
苍蝇会在各个房间进行活动,如果它现在在房间 i,下一分钟它会跑到房间 ai(如果 i=ai,表示苍蝇不会离开房间),苍蝇所在的初始房间是随机不确定的,它可能初始出现在任意一个房间。
如果需要捕捉到这只苍蝇,请你帮多多计算下至少需要多少个粘蝇板。
每个测试用例,第一行包含一个整数 n(1≤n≤105),表示房间的数量;
第二行包含 n 个整数 c1,c2,…,cn(1≤ci≤104),ci 表示在房间 i 捕捉到苍蝇需要的粘蝇板数量;
第三行包含 n 个整数 a1,a2,…,an(1≤ai≤n),ai 表示在当前房间 i 的苍蝇,下一分钟去到的房间。
每个测试用例输出一个整数,表示多多捕捉到苍蝇需要的最少的粘蝇板数量。
输入
4
1 10 2 10
2 4 2 2
输出
10
说明
把粘蝇板放在第 2 个房间,无论苍蝇最开始出现在哪个房间,在经过一段时间之后都会通过第 2 个房间,所需要的粘蝇板数量就是 10。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册