图的连通性:有向图强连通分量-Tarjan算法
参考资料:http://blog.csdn.net/lezg_bkbj/article/details/11538359
上面的资料,把强连通讲的很好很清楚,值得学习。
在一个有向图G中,若两顶点间至少存在一条路径(即a能到b,b也能到a),则称两个顶点强连通;如果该有向图G中任意两顶点都强连通,则称G为强连通图;在一个非强连通图中,若有子图是强连通图,则称该子图为强连通分量。
有向图强连通分量+链式前向星 模板如下:
const int MAXN=110;
const int MAXM=10010; struct edge
{
int next,to;
}E[MAXN]; int head[MAXN],Ecou; //Ecou:边下标
int Stack[MAXN],top; //top:栈顶
int Belong[MAXN],Bcnt; //Bcnt:强连通分量个数
int Index; //Index:时间戳
int DFN[MAXN],LOW[MAXN];
bool inStack[MAXN]; void add_edge(int u,int v)
{
E[Ecou].to=v;
E[Ecou].next=head[u];
head[u]=Ecou++;
} void Tarjan(int u)
{
int v; LOW[u]=DFN[u]=++Index;
Stack[top++]=u;
inStack[u]=true;
for(int i=head[u];i!=-1;i=E[i].next)
{
v=E[i].to;
if(!DFN[v])
{
Tarjan(v);
if(LOW[u]>LOW[v])
LOW[u]=LOW[v];
}
else if(inStack[v]&&LOW[u]>DFN[v])
LOW[u]=DFN[v];
}
if(LOW[u]==DFN[u])
{
++Bcnt;
do
{
v=Stack[--top];
inStack[v]=false;
Belong[v]=Bcnt;
}while(v!=u);
}
} void getSCC(int n)
{
for(int i=1;i<=n;i++)
if(!DFN[i])
Tarjan(i);
} void init(int n)
{
Ecou=Index=Bcnt=top=0;
for(int i=1;i<=n;i++)
{
head[i]=-1;
DFN[i]=LOW[i]=Belong[i]=0;
inStack[i]=0;
}
}模板题:HDU 1269 迷宫城堡
图的连通性:有向图强连通分量-Tarjan算法的更多相关文章
- 有向图强连通分量 Tarjan算法
[有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极 ...
- 有向图强连通分量Tarjan算法
在https://www.byvoid.com/zhs/blog/scc-tarjan中关于Tarjan算法的描述非常好,转述如下: 首先解释几个概念: 有向图强连通分量:在有向图G中,如果两个顶点间 ...
- POJ1236_A - Network of Schools _强连通分量::Tarjan算法
Time Limit: 1000MS Memory Limit: 10000K Description A number of schools are connected to a compute ...
- 强连通分量——tarjan算法
概念: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通.如果有向图G的每两个顶点都强连 ...
- 图之强连通、强连通图、强连通分量 Tarjan算法
原文地址:https://blog.csdn.net/qq_16234613/article/details/77431043 一.解释 在有向图G中,如果两个顶点间至少存在一条互相可达路径,称两个顶 ...
- 【有向图】强连通分量-Tarjan算法
好久没写博客了(都怪作业太多,绝对不是我玩的太嗨了) 所以今天要写的是一个高大上的东西:强连通 首先,是一些强连通相关的定义 //来自度娘 1.强连通图(Strongly Connected Grap ...
- [有向图的强连通分量][Tarjan算法]
https://www.byvoid.com/blog/scc-tarjan 主要思想 Tarjan算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树.搜索时,把当前搜索树中未处理的 ...
- 求图的强连通分量--tarjan算法
一:tarjan算法详解 ◦思想: ◦ ◦做一遍DFS,用dfn[i]表示编号为i的节点在DFS过程中的访问序号(也可以叫做开始时间)用low[i]表示i节点DFS过程中i的下方节点所能到达的开始时间 ...
- 图论-强连通分量-Tarjan算法
有关概念: 如果图中两个结点可以相互通达,则称两个结点强连通. 如果有向图G的每两个结点都强连通,称G是一个强连通图. 有向图的极大强连通子图(没有被其他强连通子图包含),称为强连通分量.(这个定义在 ...
随机推荐
- Python 调用shell
第一种,os.system("The command you want"). 这个调用相当直接,且是同步进行的,程序需要阻塞并等待返回.返回值是依赖于系统的,直接返回系统的调用返回 ...
- 安装hadoop-eclipse-plugin插件报错解决办法
安装myecplise的hadoop-eclipse-plugin-2.2.0插件的时候, 把插件放到这个文件夹里 打开myeclipse windows-->preferences 点击 H ...
- java.lang.IllegalArgumentException: View not attached to window manager
公司项目线上bug: java.lang.IllegalArgumentException: View not attached to window manager at android.view.W ...
- CentOS7 安装 OpenSSL 1.0.1m 和 OpenSSH 6.8p1
# 下载软件 wget http://zlib.net/zlib-1.2.8.tar.gz wget ftp://ftp.openssl.org/source/openssl-1.0.1m.tar.g ...
- SQL 默认数据库被误删
我今天也遇到了,自己解决了.这是我总结的:(不管这帖子沉到哪里了) 删除了SQL服务器默认数据库,无法连接服务器,用户[]登录失败. 1,使用管理员账户修改此用户的默认数据库. 企业管理器,展开 ...
- ABP组件包升级
对于abp的爱好者来说在使用abp上会面临两个问题,第一个是如何上手,第二是如何升级,然而们今天的主题是如何升级abp的组件包.目前我项目版本是0.8.2 通过官网boilerplate生成的项目前端 ...
- C#操作WORD换行
appWord.ActiveDocument.Bookmarks[bookMark].Select(); Word.Selection wordSelection = appWord.ActiveDo ...
- django 安装记录
1. 下载django安装包,下载个最新的安装包即可. https://www.djangoproject.com/download/ 2. 在本地解压 tar -xvf 安装包名称 3. 安装 ...
- Mac下MySQL的安装与配置
之前一直用的是阿里云的服务器,在服务器上装了一个MySQL,但是今天发现到期了,而且续费时发现之前的大学生优惠不能用了,可是明明到6月份,大学生才毕业啊,shit!!!所以没办法只能在自己电脑上装一个 ...
- JWT 多网站单点登录,放弃session
多个网站之间的登录信息共享, 基于cookie - session的登录认证方式跨域等比较复杂.采用基于算法的认证方式, JWT(json web token)的方式. --------------- ...