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缩点+拓扑序的更多相关文章

  1. POJ 2762 tarjan缩点+并查集+度数

    Going from u to v or from v to u? Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15494 ...

  2. poj 2762 强连通缩点+拓扑排序

    这题搞了好久,先是拓扑排序这里没想到,一开始自己傻乎乎的跑去找每层出度为1的点,然后才想到能用拓扑排序来弄. 拓扑排序的时候也弄了挺久的,拓扑排序用的也不多. 题意:给一个图求是否从对于任意两个点能从 ...

  3. POJ 2672 Tarjan + 缩点 + 拓扑思想

    Going from u to v or from v to u? Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17383 ...

  4. poj 2762(tarjan缩点+判断是否是单链)

    Going from u to v or from v to u? Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 19234 ...

  5. UVA 11324.The Largest Clique tarjan缩点+拓扑dp

    题目链接:https://vjudge.net/problem/UVA-11324 题意:求一个有向图中结点数最大的结点集,使得该结点集中任意两个结点u和v满足:要目u可以到达v,要么v可以到达u(相 ...

  6. [HAOI2006]受欢迎的牛 tarjan缩点 + 拓扑排序

    ---题面--- 题解: 首先tarjan缩点应该还是容易想到的,因为喜爱具有传递性,所以一个强联通分量里面的点实际上是全部等效的,所以我们可以缩成一个方便判断, 缩完点之后整张图就变成了一个有向无环 ...

  7. HDU 6165 FFF at Valentine(Tarjan缩点+拓扑排序)

    FFF at Valentine Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  8. [ZJOI2007]最大半连通子图 (Tarjan缩点,拓扑排序,DP)

    题目链接 Solution 大概是个裸题. 可以考虑到,如果原图是一个有向无环图,那么其最大半联通子图就是最长的一条路. 于是直接 \(Tarjan\) 缩完点之后跑拓扑序 DP就好了. 同时由于是拓 ...

  9. [模板]tarjan缩点+拓扑排序

    题目:给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次. 题目简述:先t ...

随机推荐

  1. 3dContactPointAnnotationTool开发日志(十九)

      增加了输出接触点信息到文件功能.

  2. YaoLingJump开发者日志(三)

      开始第二关的筹建.   增加了地刺和会移动的砖块.   每次增加一个新东西都要改好多代码,好累吖.   把第二关搞出来后发现太难了,强行调整难度.   修复了一些bug.   调整难度后还是发现太 ...

  3. vim 删除文件全部内容

    很多时候我们需要删除脚本文件全部内容, 重新再写入新的内容,进行其他的操作: 很多时候我们对应用程序的排错需要查看日志文件,然而日志中通常有许多我们以前的应用程序产生的日志,其他的日志过多的时候,有时 ...

  4. AMH面板命令操作大全

    LNMP面板 - AMH 命令使用nginx篇 » SSH Nginx1) 有步骤提示操作: ssh执行命令: amh nginx然后选择对应选项进行操作. 2) 或直接操作: 启动Nginx: am ...

  5. [剑指Offer] 46.孩子们的游戏

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...

  6. 【python】python字符串前面加u,r,b的含义

    1.字符串前加 u 例:u"我是含有中文字符组成的字符串." 作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出 ...

  7. 【bzoj4641】基因改造 特殊匹配条件的KMP

    题目描述 如果两个长度相等的字符串,如果存在一种字符的一一映射,使得第一个字符串的所有字符经过映射后与第二个字符串相同,那么就称它们“匹配”.现在给出两个串,求第一个字符串所有长度等于第二个字符串的长 ...

  8. 【codevs1380】没有上司的舞会 树形dp

    题目描述 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会,要求与会职员的快乐指数 ...

  9. 【bzoj1507】[NOI2003]Editor /【bzoj1269】[AHOI2006]文本编辑器editor Splay

    [bzoj1507][NOI2003]Editor 题目描述 输入 输入文件editor.in的第一行是指令条数t,以下是需要执行的t个操作.其中: 为了使输入文件便于阅读,Insert操作的字符串中 ...

  10. BZOJ4870:[SHOI2017]组合数问题——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=4870 https://www.luogu.org/problemnew/show/P3746 看网上 ...