Problem Description
为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每一个通道都是单向的,就是说若称某通道连通了A房间和B房间,仅仅说明能够通过这个通道由A房间到达B房间,但并不说明通过它能够由B房间到达A房间。Gardon须要请你写个程序确认一下是否随意两个房间都是相互连通的,即:对于随意的i和j,至少存在一条路径能够从房间i到房间j,也存在一条路径能够从房间j到房间i。
Input
输入包括多组数据,输入的第一行有两个数:N和M,接下来的M行每行有两个数a和b,表示了一条通道能够从A房间来到B房间。文件最后以两个0结束。
Output
对于输入的每组数据,假设随意两个房间都是相互连接的,输出"Yes",否则输出"No"。
Sample Input
3 3
1 2
2 3
3 1
3 3
1 2
2 3
3 2
0 0
Sample Output
Yes
No
#include<stdio.h>
#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct nnn
{
int u;
struct nnn *next;
}*List,list; List linkList[10005];
int stack[10005],sn;
int dfn[10005],low[10005],vist[10005],deep,flog,n;
void addNode(List &p,int uu)
{
List q=(List)malloc(sizeof(list));
q->u=uu;
q->next=p->next;
p->next=q;
}
void DFS(int v)
{
List p=linkList[v]->next;
deep++; vist[v]=1;
stack[++sn]=v;
dfn[v]=low[v]=deep; while(p!=NULL)
{
int u=p->u;
if(vist[u]==0)
{
DFS(u);
low[v]=(low[v]<low[u])?low[v]:low[u];
if(flog) return ;
}
else low[v]=(low[v]<dfn[u])?low[v]:dfn[u];
p=p->next;
}
if(low[v]==dfn[v])//表示在栈中的当前点到栈顶的点组成一个强连通
{
if(v!=1)flog=1;//假设v!=1表明可能有多个强连通
else if(sn!=n)flog=1;//v=1了可是这个强连通中点的个数为sn个
}
}
int main()
{
int m,v,u;
while(scanf("%d%d",&n,&m)>0&&n+m!=0)
{
for(int i=1; i<=n; i++)
{
linkList[i]=(List)malloc(sizeof(list));
vist[i]=0; linkList[i]->next=NULL;
}
while(m--)
{
scanf("%d%d",&v,&u);
addNode(linkList[v],u);
}
flog=0; deep=0; sn=0;
DFS(1);
if(flog)printf("No\n");
else printf("Yes\n");
}
}

hdu1269迷宫城堡 (强连通Tarjan+邻接表)的更多相关文章

  1. HDU1269迷宫城堡(裸Tarjan有向图求强连通分量个数)

    迷宫城堡Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  2. HDU1269 迷宫城堡 —— 强连通分量

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    M ...

  3. HDU11269 迷宫城堡(强连通分量)

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  4. HDU1269 迷宫城堡 2016-07-24 13:47 84人阅读 评论(0) 收藏

    迷宫城堡 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的 ...

  5. HDU-1269 迷宫城堡(连通分量)

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. hdu 1269 迷宫城堡 强连通分量

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  7. HDU1269 迷宫城堡(裸强连通分量)

    Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A ...

  8. HDU1269 迷宫城堡

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  9. 【HDOJ 1269】迷宫城堡(tarjan模板题)

    Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若 ...

随机推荐

  1. find tar排除指定文件或目录操作及查找文件内容关键字

    1.find查找排除单个目录 查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk find . -path "./sk" -prune -o -name "*. ...

  2. MVC 之AjaxHelper

    http://www.cnblogs.com/jyan/archive/2012/07/23/2604958.html 除了传统的Ajax方法之外,MVC提供了AjaxHelper类: Helper ...

  3. MySQL的表管理

    首先,先选择数据库(极其特别重要,如果不选择,将默认为第一个数据库) mysql > use db_name; 查看所有表 mysql > show tables; 1.创建表 creat ...

  4. [翻译]HLS实践

    最近公司项目没事做,课余实践研究一下技术,算是积累,也可以用到项目里,从零开始记录 HLS:Http Live Streaming 官方文档 https://developer.apple.com/s ...

  5. [实战]MVC5+EF6+MySql企业网盘实战(18)——文件上传,下载,修改

    写在前面 经过一段时间的秀秀改改,终于把文件上传下载,修改文件夹文件名称的功能实现了. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企 ...

  6. XML DOM(Document Object Model)

    1.XML DOM 是用于获取.更改.添加或删除 XML 元素的标准.2.节点(XML 文档中的每个成分都是一个节点):        整个文档是一个文档节点:        每个XML元素是一个元素 ...

  7. Java 深入浅出String

    String String是一个被final修饰的类,直接继承于Object,同时也实现了charsequence接口,String被声明为final也就不可以被继承了.由于String的方法比较多, ...

  8. 《java虚拟机》----虚拟机字节码执行引擎

    No1: 物理机的执行引擎是直接建立在处理器.硬件.指令集合操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格 ...

  9. css控制默认滚动条样式

    针对webkit内核的浏览器,使用伪类来改变滚动条的默认样式,详情如下: 滚动条组成部分 1. ::-webkit-scrollbar 滚动条整体部分 2. ::-webkit-scrollbar-t ...

  10. Java变量和运算符

    1.变量 变量概述 什么是变量?变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器,用来装载衣裤:饭盒是容器,用来装载饭菜.那么变量是 ...