hdu 1269
强连通分量题,用tarjin算法;
这是一道很简单的tarjin算法题,基本上就是套模板;
贴代码:
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#define maxn 10005
using namespace std;
vector<int>ve[maxn];
int dfn[maxn],low[maxn],ans,n,m,nncount;
bool instack[maxn],vis[maxn];
stack<int>q;
void tarjin(int x)
{
dfn[x]=low[x]=++nncount;
vis[x]=,instack[x]=;
q.push(x);
int l=ve[x].size();
for(int i=; i<l; i++)
{
int v=ve[x][i];
if(!vis[v])
{
tarjin(v);
low[x]=min(low[x],low[v]);
}
else if(instack[v])
low[x]=min(low[x],dfn[v]);
}
if(low[x]==dfn[x])
{
ans++;
int v;
do
{
v=q.top();
q.pop();
instack[v]=;
}
while(v!=x);
}
} int main()
{
int x,y;
while(scanf("%d%d",&n,&m)&&(m+n))
{
for(int i=; i<=n; i++)
{
ve[i].clear();
instack[i]=vis[i]=;
}
while(!q.empty()) q.pop();
for(int i=; i<m; i++)
{
scanf("%d%d",&x,&y);
ve[x].push_back(y);
}
nncount=ans=;
for(int i=; i<=n; i++)
if(!vis[i]) tarjin(i);
if(ans==) puts("Yes");
else puts("No");
}
return ;
}
其实这道题还可以用并查集来做;
维护两个数组,一个找儿子,一个找爸爸就行;
我也是参考别人的代码写的;
不过挺不错的,好好学习了下!
#include<cstdio>
using namespace std;
int f[],d[],n,m;
int find1(int x)
{
if(x!=&&f[x]!=x)
f[x]=find1(f[x]);
return f[x];
} int find2(int x)
{
if(x!=&&d[x]!=x)
d[x]=find2(d[x]);
return d[x];
} void uni(int x,int y)
{
if(x>) f[x]=find1(y);
if(y>) d[y]=find2(x);
} bool judge()
{
for(int i=; i<=n; i++)
if(find1(i)!=||find2(i)!=)
return ;
return ;
} int main()
{
int x,y;
while(scanf("%d%d",&n,&m)&&(n+m))
{
for(int i=; i<=n; i++)
f[i]=i,d[i]=i;
for(int i=; i<m; i++)
{
scanf("%d%d",&x,&y);
uni(x,y);
}
if(judge()) puts("No");
else puts("Yes");
}
return ;
}
hdu 1269的更多相关文章
- HDU 1269 迷宫城堡(强连通)
HDU 1269 迷宫城堡 pid=1269" target="_blank" style="">题目链接 题意:中文题 思路:强连通模板题 代 ...
- HDU 1269 迷宫城堡 (Kosaraju)
题目链接:HDU 1269 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000), ...
- Hdu 1269 强连通判定
题目链接 迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- 连通图模板(HDU 1269)
http://acm.hdu.edu.cn/showproblem.php?pid=1269 题目大意:给定一个图,判断该图是否是强连通图.(强连通图为从任意一点出发,可到达其他所有点).深搜的Tar ...
- HDU 1269:迷宫城堡(强连通)
http://acm.hdu.edu.cn/showproblem.php?pid=1269 题意:确定是否是一个强连通图. 思路:裸的tarjan算法. #include <cstdio> ...
- hdu 1269 迷宫城堡
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1269 迷宫城堡 Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个 ...
- hdu - 1269 迷宫城堡 (强连通裸题)
http://acm.hdu.edu.cn/showproblem.php?pid=1269 判断一个图是不是强连通,缩点之后判断顶点数是不是为1即可. #include <iostream&g ...
- hdu 1269 迷宫城堡(trajan判环)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 题意:略 题解:trajan模版直接求强连通分量. #include <iostream& ...
- hdu 1269 迷宫城堡 强连通分量
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU 1269 迷宫城堡(判断有向图强连通分量的个数,tarjan算法)
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
随机推荐
- fuck'em
不要说GUNGHO的游戏,连逆转三国这种都没玩过,还是做手游的,表现的那么冠冕堂皇,还不只是个常规的做软件的而已.只是以做软件的程度来做游戏,能做出的是个JB.
- JVM中的Stack和Heap
Stack: 是内存指令区.Java基本数据类型,Java指令代码,常量都保存在stack中,方法是指令也保存在stack中. 由于stack是内存是顺序分配,而且定长,不存在内存回收问题.存取速度快 ...
- Android Toast 设置到屏幕中间,自定义Toast的实现方法,及其说明
http://blog.csdn.net/wangfayinn/article/details/8065763 Android Toast用于在手机屏幕上向用户显示一条信息,一段时间后信息会自动消失. ...
- Timestamp的作用及与字符串的相互转换 .
一.Timestamp的介绍 每一个数据库都有一个计数器,这个计数器记录着数据行的插入.更新行为.如果我们为一个表中增加 timestamp 列,那么,该列将记录每一个数据行的计数器值.假如数据库中当 ...
- MarkDown Pad2的一些用法
一.标题 1.使用命令Ctrl+1 标题一 2.使用文字回车后,加上"-"号,再回车.就有如下的示例: 标题二 注意:减(-)号是用于最近的那一行文字变成标题. 二.背景 例如我要 ...
- 淘宝开源Web服务器Tengine安装教程
简介Tengine是由淘宝核心系统部基于Nginx开发的Web服务器,它在Nginx的基础上,针对大访问量网站的需求,添加了很多功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,淘宝商 ...
- iOS svn版本回退 cornerstone
http://blog.csdn.net/x32sky/article/details/46866899 IOS开发中,SVN如何恢复到某一个版本(以Cornerstone为例) Cornerst ...
- objective-c中是如何实现线程同步的?
多线程在各种编程语言中都是难点,很多语言中实现起来很麻烦,objective-c虽然源于c,但其多线程编程却相当简单,可以与java相媲美.这篇文章主要从线程创建与启动.线程的同步与锁.线程的交互.线 ...
- java新手笔记2 数据类型
1.注释 /** doc注释 * 类说明信息 */ //声明类 文件名与类名一致 public class World {//类定界符 //声明方法 main方法 public static void ...
- javascript格式化指定的日期对象
/* * 格式化Date对象为:“2015-04-17 10:20:00” * var dateObj = new Date(); */ function formartDate(dateObj){ ...