poj 2762 tarjan缩点+拓扑序
2013-09-08 10:00
var
m, n :longint;
t :longint;
f, last :array[..] of longint;
pre, other :array[..] of longint;
l, time :longint;
dfn, low :array[..] of longint;
tot :longint;
stack :array[..] of longint;
flag, fs :array[..] of boolean;
i :longint;
key :array[..] of longint;
kk :longint;
que :array[..] of longint;
count :longint; function min(a,b:longint):longint;
begin
if a>b then min:=b else min:=a;
end; procedure connect(x,y:longint);
begin
inc(l);
pre[l]:=last[x];
last[x]:=l;
other[l]:=y;
f[y]:=x;
end; procedure init;
var
i :longint;
x, y :longint;
begin
read(n,m);
for i:= to m do
begin
read(x,y);
connect(x,y);
end;
end; procedure dfs(x:longint);
var
p, q, cur :longint;
begin
inc(time);
dfn[x]:=time;
low[x]:=time;
inc(tot);
stack[tot]:=x;
fs[x]:=true;
flag[x]:=true;
q:=last[x];
while q<> do
begin
p:=other[q];
if p<>x then
begin
if not flag[p] then
begin
dfs(p);
low[x]:=min(low[x],low[p]);
end else
if fs[p] then
begin
low[x]:=min(low[x],dfn[p]);
end;
end;
q:=pre[q];
end;
p:=-;
if low[x]=dfn[x] then
begin
inc(kk);
while p<>x do
begin
p:=stack[tot];
fs[p]:=false;
key[p]:=kk;
dec(tot);
inc(count);
end;
end; end; function bfs(x:longint):boolean;
var
i :longint;
t, h, p, q :longint;
cur :longint;
d :array[..] of longint; begin
fillchar(flag,sizeof(flag),);
fillchar(d,sizeof(d),);
h:=; t:=;
que[]:=x;
d[x]:=;
while h<t do
begin
inc(h);
cur:=que[h];
q:=last[cur];
while q<> do
begin
p:=other[q];
inc(t);
que[t]:=p;
d[p]:=d[cur]+;
q:=pre[q];
end;
end;
if d[que[t]]=kk-n then exit(true) else exit(false);
end; procedure main;
var
i :longint;
x :longint;
q, p :longint;
begin
l:=;
fillchar(last,sizeof(last),);
time:=;
fillchar(f,sizeof(f),);
fillchar(low,sizeof(low),);
fillchar(dfn,sizeof(dfn),);
fillchar(flag,sizeof(flag),false);
fillchar(stack,sizeof(stack),);
tot:=;
fillchar(fs,sizeof(fs),false);
fillchar(key,sizeof(key),);
count:=;
init;
x:=;
kk:=n;
for i:= to n do
if (f[i]=) then
begin
if x<> then
begin
writeln('No');
exit;
end;
x:=i;
end;
if x= then x:=;
dfs(x); if count<>n then
begin
writeln('No');
exit;
end; for i:= to n do
begin
q:=last[i];
while q<> do
begin
p:=other[q];
if key[i]<>key[p] then connect(key[i],key[p]);
q:=pre[q];
end;
end;
x:=;
for i:=n+ to kk do
begin
if f[i]= then
begin
if x<> then
begin
writeln('No');
exit;
end;
x:=i;
end;
end; if x= then x:=;
if bfs(x) then writeln('Yes') else writeln('No');
end; begin
read(t);
for i:= to t do main;
end.
poj 2762 tarjan缩点+拓扑序的更多相关文章
- POJ 2762 tarjan缩点+并查集+度数
Going from u to v or from v to u? Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15494 ...
- poj 2762 强连通缩点+拓扑排序
这题搞了好久,先是拓扑排序这里没想到,一开始自己傻乎乎的跑去找每层出度为1的点,然后才想到能用拓扑排序来弄. 拓扑排序的时候也弄了挺久的,拓扑排序用的也不多. 题意:给一个图求是否从对于任意两个点能从 ...
- POJ 2672 Tarjan + 缩点 + 拓扑思想
Going from u to v or from v to u? Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17383 ...
- poj 2762(tarjan缩点+判断是否是单链)
Going from u to v or from v to u? Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19234 ...
- UVA 11324.The Largest Clique tarjan缩点+拓扑dp
题目链接:https://vjudge.net/problem/UVA-11324 题意:求一个有向图中结点数最大的结点集,使得该结点集中任意两个结点u和v满足:要目u可以到达v,要么v可以到达u(相 ...
- [HAOI2006]受欢迎的牛 tarjan缩点 + 拓扑排序
---题面--- 题解: 首先tarjan缩点应该还是容易想到的,因为喜爱具有传递性,所以一个强联通分量里面的点实际上是全部等效的,所以我们可以缩成一个方便判断, 缩完点之后整张图就变成了一个有向无环 ...
- HDU 6165 FFF at Valentine(Tarjan缩点+拓扑排序)
FFF at Valentine Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- [ZJOI2007]最大半连通子图 (Tarjan缩点,拓扑排序,DP)
题目链接 Solution 大概是个裸题. 可以考虑到,如果原图是一个有向无环图,那么其最大半联通子图就是最长的一条路. 于是直接 \(Tarjan\) 缩完点之后跑拓扑序 DP就好了. 同时由于是拓 ...
- [模板]tarjan缩点+拓扑排序
题目:给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次. 题目简述:先t ...
随机推荐
- 软工网络15团队作业4——Alpha阶段敏捷冲刺-2
一.当天站立式会议照片: 二.项目进展 昨天已完成的工作: 微信公众号平台注册"小程序"的账号; 下载微信官方的小程序开发工具,这个是编辑小程序和上传审核小程序必须的工具; 大家一 ...
- Jenkins系列-Jenkins忘记密码的修复方法
找回 admin 用户的密码后,可以登录系统修改其他用户的密码. 1. Jenkins 目录结构 Jenkins 没有使用数据库,所有的信息都保存在 JENKINS_HOME 目录下的文件中.其中 J ...
- ibatsi学习总结
学习来源:黑马程序员 先总结一下遇到的问题 问题1:1,resultMap 可以不写,比如配置1 配置1: <typeAlias alias="puser" type=&qu ...
- RT-thread内核之异常与中断
一.什么是中断? 中断有两种,一种是CPU本身在执行程序的过程中产生的,一种是由CPU外部产生的. cpu外部中断,就是通常所讲的“中断”(interrupt).对于执行程序来说,这种“中断”的发生完 ...
- Runtime介绍
本文目录 1.Runtime简介 2.Runtime相关的头文件 3.技术点和应用场景 3_1.获取属性\成员变量列表 3_2.交换方法实现 3_3.类\对象的关联对象,假属性 3_4.动态添加方法, ...
- NOIP2018初赛 游记
这玩意写个鬼游记啊 听说普及+提高的考两张卷子€€£也是想得出来 怎么监考还能咕咕咕的啊 怎么我到快结束了才做完啊 怎么我根本不知道初赛能带啥啊 怎么dij我都能想着对的选了错的啊 怎么我根本不知道图 ...
- 【刷题】SPOJ 1811 LCS - Longest Common Substring
A string is finite sequence of characters over a non-empty finite set Σ. In this problem, Σ is the s ...
- [LOJ2538] [PKUWC2018] Slay the Spire
题目链接 LOJ:https://loj.ac/problem/2538 Solution 计数好题. 首先可以发现这题和期望没关系. 其次对于手上的一套牌,设我们有\(a\)张强化牌,那么: 如果\ ...
- POJ1375:Intervals——题解
http://poj.org/problem?id=1375 题目大意:有一盏灯,求每段被圆的投影所覆盖的区间. —————————————————————— 神题,卡精度,尝试用各种方法绕过精度都不 ...
- Mysql数据库的主从复制
怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作: 1.1.版本一致 1.2.初始化表,并在后台启动mysql 1.3.修改root的密码 2.修 ...