#3684. 4-邻接矩阵-有向图-强连通
4-邻接矩阵-有向图-强连通
题目描述
给定一个有向图的邻接矩阵,判断该图是否是强连通图。如果是强连通图,输出 yes
,否则输出 no
。
输入格式
• 第一行输入两个整数 和 ,表示顶点数和边数(实际边数由邻接矩阵确定)。 • 接下来输入一个 的邻接矩阵,其中 表示存在从顶点 到顶点 的有向边,否则为 。
输出格式
• 输出一行,如果是强连通图则输出 yes
,否则输出 no
。
样例输入 1(强连通图)
3 3
0 1 0
0 0 1
1 0 0
样例输出 1
yes
样例输入 2(非强连通图)
3 2
0 1 0
0 0 1
0 0 0
样例输出 2
no
代码说明
- 第一次DFS:遍历原图,按顶点完成时间的后序顺序记录到
order
向量中。 - 构造逆图:将有向图的所有边方向反转,得到逆图的邻接矩阵。
- 第二次DFS:按
order
的逆序(即原图后序的逆序)处理逆图顶点,统计强连通分量数量。 - 判断强连通性:若强连通分量数量为1,输出
yes
,否则输出no
。
测试用例1描述了一个环状有向图(0→1→2→0),属于强连通图,输出 yes
。测试用例2描述了一个链状图(0→1→2),无法形成环,因此输出 no
。