主题:LAUNDRY!!!!
奶牛们用N(1<=N<=1000)根绳子架起了晾衣绳,以便晒它们刚洗完的衣服。用它们不能弯曲的拇指,奶牛们彻底搞砸了这项工作。试想一下四根绳子是这样排列的:
上插槽: 1 2 3 4
--------------- <-- 绳子固定器
\ \ / /
\ \/ /
\ /\ /
\ / \ / <-- 晾衣绳
/ \
/ \ / \
/ \/ \
/ /\ \
/ / \ \
--------------- <-- 绳子固定器
下插槽: 1 2 3 4
绳子交叉了!这个,当然是无法接受的。
奶牛们想把晾衣绳整理好。它们迟钝的头脑只能处理"交换两根绳"的问题。然而奶牛们的手臂(牛的……也叫手臂)很短,受此限制,它们只能交换相邻两根绳子的端点(在上面或者是下边的固定器上)。以上面的图为例,需要做四次这样的交换才能使绳子变成想下面这样:
1 2 3 4
------------- <-- the holder of the wires
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
------------- <-- the holder of the wires
1 2 3 4
帮助奶牛们整理晾衣绳吧。请你找出最小的交换次数,使得这些晾衣绳能够排列整齐。
你将得到有关晾衣绳位置的描述,用整数来表示当前晾衣绳的顺序。这些晾衣绳被标上了1..N的数字。现在可以告诉你的是,这些晾衣绳在上面和下面各N个连接插槽上的出现顺序。
输入格式
第1行:一个整数N
第2..N+1行:
每一行有两个隔开的整数(均在1..N范围内)。第一个整数表示在上插槽上连接的绳子的ID,第二个整数表示在下插槽上连接的绳子的ID。第二行的两个整数就分别表示了1号上插槽和1号下插槽上连接的绳子;第三行则分别描述了2号上插槽和下插槽上连接的绳子……以此类推。
样例输入(LAUNDRY.IN)
4
4 1
2 3
1 4
3 2
输出格式
第1行:一个整数,指出可以把晾衣绳全都弄直的最小交换次数
样例输出(LAUNDRY.OUT)
4
[em7]
上插槽: 1 2 3 4
--------------- <-- 绳子固定器
\ \ / /
\ \/ /
\ /\ /
\ / \ / <-- 晾衣绳
/ \
/ \ / \
/ \/ \
/ /\ \
/ / \ \
--------------- <-- 绳子固定器
下插槽: 1 2 3 4
绳子交叉了!这个,当然是无法接受的。
奶牛们想把晾衣绳整理好。它们迟钝的头脑只能处理"交换两根绳"的问题。然而奶牛们的手臂(牛的……也叫手臂)很短,受此限制,它们只能交换相邻两根绳子的端点(在上面或者是下边的固定器上)。以上面的图为例,需要做四次这样的交换才能使绳子变成想下面这样:
1 2 3 4
------------- <-- the holder of the wires
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
------------- <-- the holder of the wires
1 2 3 4
帮助奶牛们整理晾衣绳吧。请你找出最小的交换次数,使得这些晾衣绳能够排列整齐。
你将得到有关晾衣绳位置的描述,用整数来表示当前晾衣绳的顺序。这些晾衣绳被标上了1..N的数字。现在可以告诉你的是,这些晾衣绳在上面和下面各N个连接插槽上的出现顺序。
输入格式
第1行:一个整数N
第2..N+1行:
每一行有两个隔开的整数(均在1..N范围内)。第一个整数表示在上插槽上连接的绳子的ID,第二个整数表示在下插槽上连接的绳子的ID。第二行的两个整数就分别表示了1号上插槽和1号下插槽上连接的绳子;第三行则分别描述了2号上插槽和下插槽上连接的绳子……以此类推。
样例输入(LAUNDRY.IN)
4
4 1
2 3
1 4
3 2
输出格式
第1行:一个整数,指出可以把晾衣绳全都弄直的最小交换次数
样例输出(LAUNDRY.OUT)
4
[em7]