#arc049c. [arc049_c]ぬりまーす

[arc049_c]ぬりまーす

问题描述

高桥君在参加比赛并获得名次奖励时,购买了一种名为“涂魔士(ぬりまーす)”的颜料。

此外,高桥君手上有一个有 NN 个顶点的有向图,图中的每个顶点表示为顶点 11、顶点 22、...、顶点 NN

由于高桥君喜欢涂色,所以他打算使用这种“涂魔士”颜料,将颜色涂在手上的有向图的顶点上玩耍。然而,为了保持趣味性,他决定在一些顶点之间施加以下条件来进行涂色。

  • 类型1:当要给某个顶点 xx 涂色时,必须保证顶点 yy 已经被涂色。
  • 类型2:当要给某个顶点 uu 涂色时,必须保证顶点 vv 没有被涂色

类型1的约束有 AA 个,类型2的约束有 BB 个。

初始时,所有的顶点都没有被涂色。你的任务是按照适当的顺序给图中的顶点涂色,并求出最终被涂色的顶点数的最大值。


输入

输入从标准输入中按以下格式给出。

NN AA x1x_1 y1y_1 x2x_2 y2y_2 : xAx_A yAy_A BB u1u_1 v1v_1 u2u_2 v2v_2 : uBu_B vBv_B

  • 11 行:一个整数 N(1N100)N (1≦N≦100),表示有向图中的顶点数。
  • 22 行:一个整数 A(0A100)A (0≦A≦100),表示类型1约束的个数。
  • 接下来的 AA 行:每行包含两个整数 xi,yi(1xi,yiN,xiyi)x_i,y_i (1≦x_i,y_i≦N,x_i≠y_i),表示“当要给顶点 xix_i 涂色时,必须保证顶点 yiy_i 已经被涂色。”的约束条件。
  • 2+A+12+A+1 行:一个整数 B(0B10)B (0≦B≦10),表示类型2约束的个数。
  • 接下来的 BB 行:每行包含两个整数 ui,vi(1ui,viN,uivi)u_i,v_i (1≦u_i,v_i≦N,u_i≠v_i),表示“当要给顶点 uiu_i 涂色时,必须保证顶点 viv_i 没有被涂色。”的约束条件。
  • 给定的约束可能导致某些顶点永远无法被涂色。并且,可能会给出相同的约束多次。

输出

输出最终被涂色的顶点数的最大值。在输出末尾添加换行符。


示例 1

3
2
1 2
2 3
1
3 1

输出 1

可以按照顶点 33 -> 顶点 22 -> 顶点 11 的顺序涂色。


示例 2

3
2
1 2
2 3
1
1 3

输出 2

在这个约束条件下,无法给顶点 11 涂色。


示例 3

3
3
1 2
2 3
3 1
0

输出 3

在这个约束条件下,没有顶点可以被涂色。


示例 4

9
7
1 2
1 3
5 4
8 5
9 8
6 1
7 1
2
1 4
4 1

输出 4


示例 5

100
0
0

输出 5

100