/ Vijos / 题库 /

星球大战

星球大战

时间限制:1秒  内存限制:256M


【问题描述】

  很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直接或间接地连接。

  但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球。由于星球的不断被摧毁,两个星球之间的通讯通道也开始不可靠起来。现在,反抗军首领交给你一个任务:给出原来两个星球之间的以太隧道连通情况以及帝国打击的星球顺序,以尽量快的速度求出每一次打击之后反抗军占据的星球的连通快的个数。(如果两个星球可以通过现存的以太通道直接或间接地连通,则这两个星球在同一个连通块中)。

【输入格式】

  第一行包含两个整数,\(N (1 ≤ N ≤ 2M)\) 和 \(M (1 ≤ M ≤ 200,000)\),分别表示星球的数目和以太隧道的数目。星球用 0~N-1 的整数编号。
  接下来的 \(M\) 行,每行包括两个整数 \(X, Y\),其中(\(0≤X,Y<N\),\(X≠Y\)),表示星球 \(X\) 和星球 \(Y\) 之间有以太隧道。注意所有的以太隧道都是双向的。
  接下来一行是一个整数 \(K\),表示帝国计划打击的星球个数。
  接下来的 \(K\) 行每行一个整数 \(X\),满足 \(0≤X<N\),表示帝国计划打击的星球编号。帝国总是按输入的顺序依次摧毁星球的。

【输出格式】

  第一行是开始时星球的连通块个数。
  接下来的 \(N\) 行,每行一个整数,表示经过该次打击后现存星球的连通块个数。

【输入输出样例】

 Input

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

 Output

1
1
1
2
3
3

【数据说明】

  对于 \(100\%\) 的数据 \(1 ≤ N ≤ 2M\),\(1 ≤ M ≤ 200,000\)。

【来源】

  Mr.he

信息

ID
1642
难度
(无)
分类
图结构 | 数据结构 | 并查集 点击显示
标签
(无)
递交数
0
已通过
0
通过率
?
上传者