题目简意:
给定一个 n n n 个点 m m m 条边的有向图,求:对于任意一对顶点 ( u , v ) (u,v) (u,v) ,是否存在一条从 u u u 到 v v v 或一条从 v v v 到 u u u 的路径
思路:
- 乍一眼看就是求强联通分量,但题目只要求存在一条路径而不是两条,于是转变思路:
- 先求出强联通分量,再缩点,对缩点过的图做拓扑排序
- 如果拓扑序不唯一,则输出
No
,否则输出Yes
代码:
后记:
- 关于我写出
memset(a,0,sizeof b)
的憨憨代码这件事 - 关于我求拓扑序的时候把入度数组写成了
tarjan
的时间戳数组这件事