#P2723. Get Luffy Out

Get Luffy Out

描述

Ratish 是个总梦想成为英雄的年轻人。有一天,他的朋友 Luffy 被海盗 Arlong 抓走了,Ratish 便立刻出发前往 Arlong 岛。当他到达那里时,找到了关押朋友的秘密地点,但他不能直接闯入。他看到正前方有一扇大门,门上有两个锁。大门旁边有一块奇怪的石头,上面刻有一些奇怪的文字。那些句子被加密了,但对于业余密码学家 Ratish 来说,这很容易解开。解密后,Ratish 得知以下事实:

大门后面有一个巢式监狱,共有 MM 层。除最深的一层之外,每层都有一扇通向下一层的门,而每扇门上都有两个锁。Ratish 只要其中任一把锁被打开就可以通过门。所有门上共有 2N2N 种不同类型的锁。相同类型的锁可能出现在不同的门上,而且一扇门上可能有两个相同类型的锁。每把锁对应唯一的一把钥匙,所以总共 2N2N 把钥匙,同时这些钥匙被分成 NN 对,一旦某对钥匙中的一把被使用,另一把就会消失,不再出现。

后来,Ratish 在石头下面找到了 NN 对钥匙,并发现一张纸,准确记录了 MM 扇门上锁的种类。但 Ratish 并不知道 Luffy 被关在第几层,所以他必须尽可能多地打开门。请你帮助他从每对钥匙中选择一把钥匙,使得他能够打开最多的门。

输入

输入包含若干测试用例。每个测试用例的第一行包含两个正整数 NNMM,其中 1N2101\leq N\leq 210 表示钥匙类型数(钥匙总数为 2N2N,编号为 0,1,2,,2N10,1,2,\dots,2N-1),1M2111\leq M\leq 211 表示门的数量。接下来的 NN 行中,每行包含两个不同的整数,表示一对钥匙的编号。之后的 MM 行中,每行包含两个整数,表示一扇门上两个锁对应的钥匙编号。门按照 Ratish 遇到的顺序给出。测试用例以一行 "0 00\ 0" 结束,不需处理。

输出

对于每个测试用例,输出一行一个整数,表示 Ratish 最多能打开的门数。

3 6
0 3
1 2
4 5
0 1
0 2
4 1
4 2
3 5
2 2
0 0
4

题目来源

Beijing 2005