#P2270. 交错匹配(cross)

交错匹配(cross)

问题描述:

有两行自然数,UP[1..N],DOWN[1..M],如果UP[I]=DOWN[J]=K,那么上行的第I个位置的数就可以跟下行的第J个位置的数连一条线,称为一条K匹配,但是同一个位置的数最多只能连一条线。另外,每个K匹配都必须且至多跟一个L匹配相交且K≠L!现在要求一个最大的匹配数。

例如:以下两行数的最大匹配数为8

输入格式:

从文件cross.in读入数据,第一行有两个正整数N和M。第二行N个UP的自然数,第三行M个DOWN的自然数。其中0<N、M<=200,UP、DOWN的数都不超过32767。

输出格式:

最大匹配数输出到cross.out

样例一

12 11
1 2 3 3 2 4 1 5 1 3 5 10
3 1 2 3 2 4 12 1 5 5 3
8

样例二

4 4
1 1 3 3
1 1 3 3
0

特别强调:

满足每条上下连边(i到j连边条件是up[i]==down[j])都有且仅仅有还有一条连边与之相交的最多边数。