#P1433. Exchanges

Exchanges

本题没有可用的提交语言。

题目描述

给定nn个整数寄存器r1,r2,,rnr_1, r_2, \ldots, r_n,我们定义一个比较交换指令CE(a,b)\text{CE}(a, b),其中a,ba, b是寄存器索引(1a<bn1 \leq a < b \leq n):

CE(a,b)\text{CE}(a, b):
如果寄存器rar_a的内容大于rbr_b的内容,则交换rar_arbr_b的值。

一个比较交换程序(简称CE\text{CE}程序)是任意有限的比较交换指令序列。如果一个CE\text{CE}程序在执行后,寄存器r1r_1始终包含所有寄存器中的最小值,则称该程序为最小值查找程序。如果该程序在删除任意一条CE\text{CE}指令后仍是最小值查找程序,则称其为可靠的。

给定一个CE\text{CE}程序PP,问最少需要在程序PP的末尾添加多少条指令,才能使其成为一个可靠的最小值查找程序?

示例
考虑以下针对3个寄存器的CE\text{CE}程序:
CE(1,2);CE(2,3);CE(1,2)\text{CE}(1, 2); \text{CE}(2, 3); \text{CE}(1, 2)
为了使该程序成为可靠的最小值查找程序,只需添加两条指令:CE(1,3)\text{CE}(1, 3)CE(1,2)\text{CE}(1, 2)

任务
编写一个程序,对每个数据集:
读取CE\text{CE}程序的描述;
计算最少需要添加的CE\text{CE}指令数量;
输出结果。

输入格式

第一行输入一个正整数dd,表示数据集的数量(1d101 \leq d \leq 10)。接下来是dd个数据集。

每个数据集由两行组成:
第一行包含两个整数nnmm,用空格分隔(2n100002 \leq n \leq 10\,0000m250000 \leq m \leq 25\,000)。nn是寄存器的数量,mm是程序的指令数量。
第二行包含2m2m个整数,用空格分隔,表示程序本身。第2j12j-1和第2j2j位的整数aja_jbjb_j1aj<bjn1 \leq a_j < b_j \leq n)是程序中第jj条指令的参数。

输出格式

输出dd行,每行一个整数,表示对应该数据集需要添加的最少指令数量。

输入样例 1

1  
3 3  
1 2 2 3 1 2  

输出样例 1

2  

来源

中欧 2001