题目链接

连通图模板题;

 
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
#define maxn 10005
int dfn[maxn];///代表最先遍历到这个点的时间
int low[maxn];///这个点所能到达之前最早的时间点
int Stack[maxn];///自定义的栈,比较好用
int cnt, bloks;///cnt总的连通个数, 连通块的总个数
bool InStack[maxn];///判断这个点是否在栈中
int n, m, Time, top;///Time 时间点, top用于栈操作
vector<vector<int> > G;
void
Tarjan(int u)
{

low[u] = dfn[u] = ++Time;///更新时间点
Stack[top++] = u;///将u压入栈中
InStack[u] = true;
int
len = G[u].size(), v;///深度优先遍历与u相连的所有节点

for
(int i=; i<len; i++)
{

v = G[u][i]; if(!dfn[v])///我们可以用dfn判断这个点是否曾经被遍历过
{///若是没被遍历过,那么我们就遍历一下
Tarjan(v);
///假如u点下方节点v可以到达的点那么u点也一定能到达
low[u] = min(low[u], low[v]);
///在两者中取一个最小的,到达点
}
else if
( InStack[v] )
/**如果遍历的这个点已经在栈中了,那么就需要更新一下,这里其实写成low[u] = min(low[u],low[v])也可以肯定是没错的,但是
在我们求割点的时候就必须要写成low[u] = min(low[u], dfn[v]),到求割点的时候我们会好好解释一下*/
low[u] = min(low[u], dfn[v]);
}

/**当这个节点的所有节点已经遍历完了并且 low[u] == dfn[u],这个时候说明我们已经返回到了这个点的最初的时间点的位置
将我们栈中的所有元素出栈就可以完成连通图求解了*/
if
(low[u] == dfn[u])
{

do

{

cnt ++;
v = Stack[--top];
InStack[v] = false;
}
while(u != v);
bloks ++;
}
}

void
Init()
{

G.clear();
G.resize(n+);
memset(low,, sizeof(low));
memset(dfn,, sizeof(dfn));
memset(Stack,, sizeof(Stack));
memset(InStack, false, sizeof(InStack));
bloks = cnt = Time = top =;
}
int main()
{

while
(scanf("%d %d",&n, &m), n+m)
{

Init();
while
(m --)
{

int
a, b;
scanf("%d %d", &a, &b);
G[a].push_back(b);
}

Tarjan();
if
( cnt == n && bloks == )
puts("Yes");
else

puts("No");
}

return
;
}

迷宫城堡--hdu1269(连通图)的更多相关文章

  1. (连通图 模板题)迷宫城堡--hdu--1269

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1269 http://acm.hust.edu.cn/vjudge/contest/view.action ...

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

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

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

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

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

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

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

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

  6. HD1269迷宫城堡(有向图 && 划分连通块)

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

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

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

  8. hdu 1269 迷宫城堡

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1269 迷宫城堡 Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个 ...

  9. 迷宫城堡--HDOJ 1269(Tarjan)

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

随机推荐

  1. vmware下虚拟机不能上网问题解决

    这个问题困扰了好久,vmware下装的虚拟机可以通过DHCP获取单独IP,但当用到管控较严格的环境,需要它与主机共享IP时,就不好使了. 今天在一篇文章中找到答案,如下图,windows系统中要启动V ...

  2. MySQL 安装与配置

    Linux 安装 MySQL Windows 安装 MySQL 如何连接 MySQL 如何修改 MySQL 密码 如何重置 MySQL 密码

  3. 51开发环境的搭建--KeilC51的安装及工程的创建

    学习单片机的开发,单靠书本的知识是远远不够的,必须实际操作编程才能领会书中的知识点,起到融会贯通的效果.51单片机作为入门级的单片机--上手容易.网上资源丰富.单片机稳定性及资源比较丰富.通过串口即可 ...

  4. (原创)使用mceusb设备,将lirc移植到android笔记

    首先说一下大环境和总体步骤: 下载lirc 0.8.7源码,使用ubuntu的setup.sh,配置为mceusb的驱动,同时Compile tools for X-Windows选项去掉,生成con ...

  5. 《转》windows下通过cmd切换python2和python3版本

    当电脑中同时安装了python2和python3时,往往会由切换版本的需求.那么如何通过cmd命令行做到呢? 方法:修改python.exe的文件名 举个栗子: 我的电脑中同时安装了py2.7.10和 ...

  6. php计算两个日期时间差(返回年、月、日)

    在PHP程序中,很多时候都会遇到处理时间的问题,比如:判断用户在线了多长时间,共登录了多少天,两个帖子发布的时间差或者是不同操作之间的日志记录等等.在文章中,简单地举例介绍了PHP中如何计算两个日期相 ...

  7. linux查看Raid磁盘阵列信息

    软件raid:只能通过Linux系统本身来查看 cat /proc/mdstat 可以看到raid级别,状态等信息. 硬件raid: 最佳的办法是通过已安装的raid厂商的管理工具来查看,有cmdli ...

  8. <转>ML 相关算法参考

    转自 国内外网站如果你想搜索比较新颖的机器学习资料或是文章,可以到以下网站中搜索,里面不仅包括了机器学习的内容,还有许多其它相关领域内容,如数据科学和云计算等.InfoWord:http://www. ...

  9. 二.jquery.datatables.js表格数据添加

    1.后台php public function addtable(){ $data = $_POST; if(M('yanfa_project')->add($data)){ $this-> ...

  10. Linux 常用查找文件或者文件内容

    举例树形图 .|-- test_dir| `-- dir_test_doc.text|-- test_dir2| |-- dir2_test_doc.txt| `-- dir2_test_doc2.t ...