图论强连通模板题。中文题意不赘述。
我的解题思路:判断一个有向图是否强连通,可以用Tarjan算法计算出这个有向图的极大强连通分量个数是否只有一个。还有一种比较水的方法:判断一个有向图是否强连通,随便找一个点看一下能否搜索到原图中所有点,然后依旧是这个点看能否搜索到反图(原图的边是x->y那么反图为y->x)中的所有点。如果能的话说明该图强连通。
我的解题代码:Tarjan强连通分量算法,未缩点
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
#define N 10002
vector <int> e[N];
int dfn[N], low[N];
int vis[N]; //0代表未访问过,1代表访问过但是当前不在栈内,2代表访问过且在栈内
int index;
int Stack[N]; //手写栈
int Stop; //栈顶下标
int ans;
int n, m;
void InitRead();
void DataProcess();
void Tarjan(int x);
int main()
{
while (~scanf(&#