有向图的强联通分量相关例题(Korasaju算法和Tarjan算法)
有向图的强联通分量相关例题(Korasaju算法和Tarjan算法) 一、 poj 2186:Popular Cows 即:强连通分量+缩点 还是很菜,都是照着大佬的板子敲的,而且还不是很熟练 Korasaju算法 实现 /**korasaju算法*/ # include <cstdio> # include <cstring> # include <algorithm> # include <iostream> # include <vector> using namespace std ; const int maxn = 10010 ; vector < int > edge1 [ maxn ] ; //原图的邻接表 vector < int > edge2 [ maxn ] ; //逆图的邻接表 int End [ maxn ] ; //对原图搜索,顶点的序号 int vis [ maxn ] ; int out [ maxn ] ; //转化为DAG以后的每个缩点的出度 int belong [ maxn ] ; //每个顶点属于哪个集合,相当于染色,当前结点被染成了什么颜色 int setNum [ maxn ] ; //每个颜色包括多少顶点,也就是强联通分量的个数 int color ; //代表不同的颜色 int cnt ; //正向排序的编号 int n , m