题库/Y1316

#Y1316. 堆排问题

    传统题 难度: 省选 标签>一本通状态、转移、目标与判重按估价阈值迭代的IDA星启发估价与可采纳性最优性剪枝开放寻址冲突处理
时间限制2000 ms
内存限制256 MiB
通过率—0 / 0 次提交
题目描述 查看题解 开始编程Alt+E

Y1316 · 堆排问题

退出在线编程模式
省选 读懂题意,让每一次思考成为成长。
时间限制2000 ms
内存限制256 MiB
通过率—0 / 0 次提交

题目描述

给定一个 NN 个结点的二叉树,每个结点有个点权FiF_i,点权互不相同。 再给定MM种交换方式,每种交换方式形如(ui,viu_i,v_i),表示一次操作可以选择MM种交换方式的任意一种,将ui,viu_i,v_i的点权交换。 求最少多少次交换,可以将原二叉树变为一个满足大根堆性质的二叉树(父亲的点权是以它为根的子树中最大的)。

输入

第一行,两个整数 NN, MM。 第二行,NN个整数 R1,R2,…,RNR_1, R_2,…, R_N,由空格隔开。RiR_i表示点ii的父亲。 对于二叉树的根,RiR_i用00表示。 第三行,NN个互不相同的整数F1,F2,…,FNF_1, F_2,…, F_N,由空格隔开。其中 FiF_i表示点ii的点权。 接下来MM行,每行两个整数ui,viu_i,v_i,表示每种交换方式。

输出

仅一行,一个整数,表示总交换次数的最小值。

输入样例

4 4 
0 1 2 3 
1 2 3 4 
1 2 
1 4 
2 3 
1 3

输出样例

2

提示

【样例输入2】

5 4 
3 3 5 5 0 
4 8 10 9 3 
1 2 
2 4 
1 3 
4 5

【样例输出2】

6

【样例解释】 第一组样例,如下图所示。 题面插图 最优方案为进行(2,32,3),(1,41,4)两次交换 第二组样例,如下图所示。 题面插图   最优方案为依次进行(1,2),(1,3),(1,2),(2,4),(2,5),(2,4)(1,2),(1,3),(1,2),(2,4),(2,5),(2,4)共六次交换。 【数据规模与约定】 本题一共有10 个测试点。 下表是每个测试点的数据规模和约定:

测试点编号N=M=备注
155无其他限制
276
3810无其他限制
4930
51019
61313
716120
81012答案不超过10
91117
101220
对于100%的数据,$1≤F_i≤100$。 输入数据保证形成一个二叉树,任何两个点之间至多有一种交换方式,且交换方式不会出现自环。数据保证有解。

评测数据说明

本题使用按题意独立构造、以独立程序核对的训练数据及公开样例,共7个测试点,非原站或官方原始数据。总分100分。