挪酒瓶
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

你有  瓶酒,第  瓶重量为 w_i,想要交换到位置 a_i

每次可以选择两个酒瓶,交换他们的位置,花费为两个酒瓶的重量和。

求把所有酒瓶交换到指定位置最小的花费

输入描述:

第一行一个正整数 ,代表测试数据的组数

每组测试数据有3行,第一行一个正整数 ,表示酒瓶的数量

第二行  个正整数 a_i,表示第  个酒瓶想要到  位置上。输入保证  到  在  中恰出现一次。

第三行个正整数,表示第瓶酒的重量为

输出描述:

每组输入数据输出一行,代表花费
示例1

输入

复制
2
4
2 1 4 3
10 20 30 40
3
2 3 1
10 20 30

输出

复制
100
70