## 需求
存在一个大小为$n$的点集$V_1$ 和 大小为$m$的点集$V_2$,$V_1$中的每个点都需要向$V_2$中的每个点连一条边
## $n * m$条边
![](https://cdn.jsdelivr.net/gh/G-ghy/cloudImages@master/20211007155650.png)
当$n$和$m$数值较大或者需要建图多次时,一定概率会超内存或者遍历时超时
## $n + m$条边
对于不同起点,相同终点,两条路径可以看为存在交点的,交点到终点的路径可以等效为一条,如果可以实现路径复用,既能够有效减少边数
因此一种解决方案为,在$V_1$ 与 $V_2$之间添加一个虚拟点,$V_1$中的节点首先向虚拟点连边,再由虚拟点向$V_2$中的各个点连边
![](https://cdn.jsdelivr.net/gh/G-ghy/cloudImages@master/20211007160800.png)
## 相关题目
[拓扑排序-车站分级](https://www.acwing.com/problem/content/458/)
标签:原点,##,复杂度,点集,建图,虚拟,https,gh From: https://blog.51cto.com/u_14882565/6670191