有向图的强联通tarjan算法(判断是否为强联通模板)(hdu1269)
hdu1269
迷宫城堡
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 6081    Accepted Submission(s): 2694
3 3
1 2
2 3
3 1
3 3
1 2
2 3
3 2
0 0
Yes
No
#include"stdio.h"
#include"string.h"
#include"iostream"
#include"stack"
#define M 10020
using namespace std;
stack<int>q;//定义栈
int head[M];
int use[M];//记录该点是否进栈
int dfn[M];
int low[M];
int belong[M];//Belong[i]=a;表示点i属于第a个连通分量;
int num;//记录连通分量的个数;
int index;//表示到达某点的时间,即次序;
int t,n;
struct st
{
int u,v,next;
}edge[M*20];
void init()
{
t=0;
memset(head,-1,sizeof(head));
}
void add(int u,int v)
{
edge[t].u=u;
edge[t].v=v;
edge[t].next=head[u];
head[u]=t++;
}
void tarjan(int u)
{
int i;
dfn[u]=low[u]=++index;//注意index初始化为0,不能写成index++,
//要不第一个点的low和dfn的值会赋为0;
q.push(u);//入栈
use[u]=1;
for(i=head[u];i!=-1;i=edge[i].next)//对可以到达的点进行搜索;
{
int v=edge[i].v;
if(!dfn[v])//如果改点未被搜到过,则继续更新low
{
tarjan(v);
low[u]=min(low[u],low[v]);
}
if(use[v])//若指向的改点在栈中更新low
{
low[u]=min(low[u],dfn[v]);
}
}
if(dfn[u]==low[u])//表示找到了一个完整的强联通
{
num++;//强联通个数+1;
int vv;
do
{
vv=q.top();
q.pop();
use[vv]=0;
belong[vv]=num; }while(u!=vv);//直到vv==u,都属于第num个强联通分量
}
}
void solve()
{
index=num=0;
memset(dfn,0,sizeof(dfn));
memset(use,0,sizeof(use));
for(int i=1;i<=n;i++)//有些点可能不是在同一个连通图中
{
if(!dfn[i])
tarjan(i);
}
}
int main()
{
int i,m;
while(scanf("%d%d",&n,&m),m||n)
{
init();
for(i=0;i<m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
add(a,b);
}
solve();
int ans=belong[1];
int flag=0;
for(i=1;i<=n;i++)
if(belong[i]!=ans)
{
flag=1;
break;
}
if(flag)
printf("No\n");
else
printf("Yes\n");
}
}
有向图的强联通tarjan算法(判断是否为强联通模板)(hdu1269)的更多相关文章
- 有向图强连通分量的Tarjan算法
		有向图强连通分量的Tarjan算法 [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G ... 
- 算法笔记_144:有向图强连通分量的Tarjan算法(Java)
		目录 1 问题描述 2 解决方案 1 问题描述 引用自百度百科: 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连 ... 
- 有向图强连通分量的Tarjan算法及模板
		[有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强联通(strongly connected),如果有向图G的每两个顶点都强联通,称有向图G是一个强联通图.非强联通图有向 ... 
- 【转】有向图强连通分量的Tarjan算法
		原文地址:https://www.byvoid.com/blog/scc-tarjan/ [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly con ... 
- 【转载】有向图强连通分量的Tarjan算法
		转载地址:https://www.byvoid.com/blog/scc-tarjan [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly conn ... 
- 有向图强连通分量的Tarjan算法(转)
		[有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极 ... 
- 『图论』有向图强连通分量的Tarjan算法
		在图论中,一个有向图被成为是强连通的(strongly connected)当且仅当每一对不相同结点u和v间既存在从u到v的路径也存在从v到u的路径.有向图的极大强连通子图(这里指点数极大)被称为强连 ... 
- Java实现有向图强连通分量的Tarjan算法
		1 问题描述 引用自百度百科: 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.有向图的极大强连通子图,称为 ... 
- 【有向图】强连通分量-Tarjan算法
		好久没写博客了(都怪作业太多,绝对不是我玩的太嗨了) 所以今天要写的是一个高大上的东西:强连通 首先,是一些强连通相关的定义 //来自度娘 1.强连通图(Strongly Connected Grap ... 
- [有向图的强连通分量][Tarjan算法]
		https://www.byvoid.com/blog/scc-tarjan 主要思想 Tarjan算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树.搜索时,把当前搜索树中未处理的 ... 
随机推荐
- 运行jsp常犯的错误
			error 未启动tomcat服务 tomcat端口是否已改动 404: 未部署web应用 运行时URL输入错误 检查文件的存放位置(存放文件的目录无法对外引用,如WEB-INF , META-INF ... 
- 关于 wsdl2Java 自动生成客户端调取webservice接口
			webservice地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl wsdl2Java 自动生成类名: 客户端调 ... 
- 标准JSON格式定义与解析注意点
			标准JSON格式定义与解析注意点 在JS.IOS.Android中都内置了JSON的序列化.反序列化SDK.JEE中也可以使用第三方的JSON解析库,如GSON.虽然在JSON格式被定义出来的时候并没 ... 
- 01-虚拟软件vmware安装
			什么是虚拟软件: 虚拟原件是一个可以使你在一台机器上同时运行二个或更多Windows.LINUX等系统.它可以模拟一个标准PC环境.这个环境和真实的计算机一样,都有芯片组.CPU.内存.显卡.声卡.网 ... 
- 8 -- 深入使用Spring -- 0...
			要点梗概: 利用后处理器扩展Spring容器 Bean后处理器和容器后处理器 Spring3.0 的“零配置” 支持 Spring的资源访问策略 在ApplicationContext中使用资源 AO ... 
- C语言对文件的基本操作
			在C语言中,对于文件的操作是利用FILE结构体进行的. 几个常用的操作文件函数简介 1:打开文件 FILE *fopen( const char *filename, const char *mode ... 
- Spring4 Quartz2 动态任务,Spring4整合quartz2.2.3简单动态任务
			Spring4 Quartz2 动态任务 Spring4整合quartz2.2.3简单动态任务, Quartz2.2.3简单动态定时任务二, SimpleScheduleBuilder简单定时任务 ... 
- 【代码审计】eduaskcms_v1.0.7前台存储型XSS漏洞分析
			0x00 环境准备 eduaskcms官网:https://www.eduaskcms.xin 网站源码版本:eduaskcms-1.0.7 程序源码下载:https://www.eduaskcm ... 
- 【DVWA】Web漏洞实战之File Upload
			File Upload File Upload,即文件上传漏洞,一般的上传漏洞可能是未验证上传后缀 或者是验证上传后缀被bypass 或者是上传的文件验证了上传后缀但是文件名不重命名. LOW 直接上 ... 
- 执行automake时报错 error while making link: Operation not supported
			执行automake时报错: [root@localhost project]# automake --add-missingconfigure.in: installing `./install-s ... 
