题目:判断一个图是否为强连通图、单向连通图、弱连通图。输入为有向图的邻接矩阵。
输入:
第一行为正整数N(0<N<=100),代表图中点的个数。
接下来N行,每行有N个数据,每个数据以空格分隔,代表邻接矩阵。
注意:输入的都是连通图。
输出:
输出有一行,字母A,B,C
A代表强连通图
B代表单向连通图
C代表弱连通图
思路:对原图邻接矩阵进行dfs,有节点未访问到排除强连通图,求逆图邻接矩阵,对逆图邻接矩阵进行dfs,有节点两次均未访问到排除单向连通图
#include<iostream>
#include<memory>
using namespace std;
const int Max = 100;
class Graph
{
private:
int N;
int A, B, C;
int V[Max][Max];
public:
Graph(int n)
{
N = n;
for (int i = 0; i < N; i++)
{
for (int j = 0