2758 - 要塞攻坚战

题目描述

敌军占领了 N 个要塞(编号为 [0,N-1] ),有 M 条补给通道连接了部分要塞,使得补给通道连接的要塞之间可以互相支援。

不同的要塞如果通过补给通道可以直接的或者间接地连接,这些要塞将会形成一个可以互相辅助的、战力较强的庞大的军团。

我军将要发起代号为“黎明利刃”的要塞攻坚战。本次战争,我军将集结优势兵力,逐个击破敌军的 K 个不同的要塞,每个要塞一旦被击破,连接该要塞的补给通道也将被我军控制,从而实现将敌方的大军团瓦解为若干互相独立的小军团的目标,削弱、瓦解敌方战力,从而方便我军逐个击破。

请编程计算出,根据给定的数据,我军按约定的顺序,每击破敌军一个要塞,敌军剩余军团的数量。

输入

1 行有 2 个整数 N,M ,代表敌人要塞的数量(要塞编号 0 \sim n-1 ),以及要塞之间的补给通道的数量。

接下来 M 行,每行有 2 个整数 x,y,代表编号为 x 的要赛和编号为 y 的要塞之间有一条双向的补给通道。

接下来一行,读入整数 K,表示我军本次战役计划占领敌军要塞的数量。

接下来 K 行,有 K 个不同的整数(数值在 [0,n-1] 之间),代表了我军将按照顺序占领敌军要塞的编号。

输出

1 行输出战役发起之前,敌军军团总数。

接下来 K 行,每行输出一个整数,代表了我军按照顺序占领敌军某个要塞之后,敌军军团总数。

样例

输入

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

输出

1
1
2
2
1

输入

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

输出

2
2
2
3
3
2
1

输入

17 10
6 15
13 0
5 2
13 12
8 9
12 5
15 10
12 9
1 12
5 7
5
11
3
8
9
5

输出

7
6
5
5
5
7
说明

【数据范围】

对于 30\% 的数据,1\le M \le 10001\le N \le 2Mx \neq y1 \le K \le N

对于 100\% 的数据,1\le M \le 2\times 10^51\le N \le 2Mx \neq y1 \le K \le N

对于所有的数据点,任意两个相同的要塞之间,最多只存在 1 条补给通道。

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 162
通过人数 75
金币数量 3 枚
难度 提高


上一题 下一题