#970. 损坏的城市(damage.cpp)

损坏的城市(damage.cpp)

Background

Special for beginners, ^_^

Description

小C的国家遭受了一场地震。有一些城市遭到了损坏,但幸运地,所有城市间的道路都还能使用。

小C的国家有P(1 <= P <= 30,000)个城市,编号1..P。有C(1 <= C <= 100,000)条双向路经联接这些城市,编号为1..C.。路经i连接城市a_i和b_i (1 <= a_i<= P;1 <= b_i <= P)。需要注意的是,路经可能连接a_i到它自己,两个城市之间可能有多条路经。

国家首都在编号为1的城市。N (1 <= N <= P)个在不同城市的人通过手机短信report_j(2 <= report_j <= P)告诉小C他们的城市(report_j)没有损坏,但是它们无法到达首都(到达首都的路径上有损坏的城市)。请你帮小C找出至少有多个不可能达到首都的城市(这个数目包括已经损坏的城市)?

Format

Input

第1行: 三个空格分开的数: P, C, 和 N

接下来C行, 每行两个空格分开的数: a_i 和 b_i

接下来N行,每行一个数 report_j

Output

输出一行一个数,表示最少不能到达首都的城市的数目(包括损坏的城市)。

Samples

4 3 1 
1 2 
2 3 
3 4 
3
3

【样例1说明】

当城市2遭到损坏时,城市3无法到达首都,总共城市2, 3, 4无法到达首都。

其余城市遭到损坏不可能使得3号城市无法到达首都。

故最少不能到达首都的城市数为3

Limitation

对于 20% 的数据:1 <= N<=P <= 10,1 <= C <= 50 ~~

对于所有数据:1 <= N<=P <= 30,000,1 <= C <= 100,000