给定一个无向图,有些节点是白色,有些节点是红色。求将第i个节点染红后,有多少个红色连通块。
红色节点染红,显然红色连通块的数目不变。
将白色节点染红,则要取决于与该染红节点相邻的节点有多少已经是红色的。而这些已经是红色的节点有可能已经位于同一个连通块中了,因此我们需要使用并查集来判断它们是否处于同一个集合。
最开始,通过某一个未被标记的红色节点开始遍历,将其所能到达的所有红色节点划分到该集合中,然后标记。重复上述过程,直到所有红色节点都被划分进集合中。此时可以求到集合总数为res,也就是最开始的答案或者说将红色节点染红的答案。
小红有一个无向图,图中有若干个节点是红色,其余为白色。小红想知道,将i染成红色,当前图中红色连通块的数量是多少?
第一行输入两个正整数n,m,代表无向图的节点数和边数。
第二行输入一个长度为n的字符串,第i个字符为"R"代表节点被染成红色,"W"代表节点被染成白色。
接下来的m行,每行输入两个正整数u,v,代表节点u和节点v有一条无向边连接。
请注意,无向图不保证是连通的,而且可能有重边和自环。
1≤n,m≤105
1≤u,v≤n
一共n行,第i行代表将i染红,当前的红色连通块数量
输入
4 4
WRWW
1 2
2 3
1 3
1 4
输出
1
1
1
2