题意简述
给定平面上的 $m$ 个整点 $(x, y), x, y\in[1, n]$,将这 $n$ 个点染黑。然后任取两个黑色的点 $(a, b), (b, c)$ 并将点 $(c, a)$ 染黑,直至无法再染黑任何点为止。
求最后平面上有多少点被染黑。$n, m\le 5\times 10^5$。
主要思路
不妨建出一个 $n$ 个点的图,对于每一对给定的 $(x, y)$ 则在图中连边 $x\to y$。
则对于任何一条长为 $2$ 的链,其形态会变成一个三元环。
考虑对每个弱连通块三染色。
- 如果染色成功,则最后连通块中所有颜色 $0,1,2$ 的点会分别向所有颜色 $1,2,0$ 的点连边。
- 如果不成功但用了每种颜色,则可知一定出现了长度不为 $3$ 的倍数的环,这个连通块会被连成完全图(包括自环)。
- 如果不成功且没有用到每种颜色,则不会新加边。
于是做完了。
参考代码
1 |
|