问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

poj 2816 用pascal 怎么过, 要详细代码,最好附上题解或者解释

发布网友 发布时间:2024-11-08 04:35

我来回答

1个回答

热心网友 时间:2024-11-08 05:08

【强连通tarjan算法】
(这是一种在图论中挺常用的算法,但省队以下的是基本不会考的,LZ需要的话可以百度一下模板以及讲解,实在不理解的话可以自己模拟几遍、、、)
http://www.cnblogs.com/pony1993/archive/2012/08/07/2627344.html
http://www.cnblogs.com/-sunshine/archive/2012/10/04/2711185.html
(以上两个网址包括tarjan算法的具体实现以及本题的解题报告)
----------------------------------------------------------------------------------------------------------------------
【下面附代码】:
var n,m,x,y,z,sum:longint;
s,t,a,b:array[1..50000]of longint;
o,p,q,fa,num,out:array[1..10000]of longint;
f:array[1..10000]of boolean;
//-------------------------------------------------分割线----------------------------------------------------------
function min(x,y:longint):longint;
begin
if x<y then exit(x)
else exit(y);
end;
//-------------------------------------------------分割线----------------------------------------------------------
procere init;
var i,j,k:longint;
begin
readln(n,m);
for k:=1 to m do
begin
readln(i,j);
s[k]:=i;
t[k]:=j;
a[k]:=b[i];
b[i]:=k;
end;
end;
//-------------------------------------------------分割线----------------------------------------------------------
procere work(i:longint);
var j,k:longint;
begin
inc(x);p[i]:=x;q[i]:=x;
inc(y);o[y]:=i;f[i]:=true;
j:=b[i];
while j<>0 do
begin
k:=t[j];
if p[k]=0 then
begin
work(k);
q[i]:=min(q[i],q[k]);
end
else
if(p[k]<p[i])and(f[k])then
q[i]:=min(q[i],p[k]);
j:=a[j];
end;
if p[i]=q[i] then
begin
inc(z);
repeat
inc(num[z]);
k:=o[y];
dec(y);
f[k]:=false;
fa[k]:=z;
until k=i;
end;
end;
//-------------------------------------------------分割线----------------------------------------------------------
procere main;
var i,j,k:longint;
begin
for i:=1 to n do
if q[i]=0 then
work(i);
for i:=1 to n do
begin
j:=b[i];
while j<>0 do
begin
k:=t[j];
if fa[i]<>fa[k] then
inc(out[fa[i]]);
j:=a[j];
end;
end;
for i:=1 to z do
if out[i]=0 then
inc(sum);
if sum<>1 then writeln(0)
else
for i:=1 to z do
if out[i]=0 then
begin
writeln(num[i]);
break;
end;
end;
//-------------------------------------------------分割线----------------------------------------------------------
begin
init;
main;
end.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
长春小飞没有车没有房 碳钢的多久生锈 碳钢多久会生锈 碳钢多长时间会开始生锈 碳钢和铝哪个容易生锈 梦见天宫图是什么意思 光遇2023好友树解锁图鉴 光遇二级节点多少个 ...火柴小女孩》《词语手册》里有很多词语的意思的,求告知 暖融融解释 领淘通淘客助手这个软件怎么样? 19 春夏养阳,秋冬养阴 学会逆向思维 第三章 图论 No.9有向图的强连通与半连通分量 tarjan算法和数据结构 图的割点和割边 SketchUp古建教程——斗拱 斗拱所有升的尺寸是一样的吗 斗拱的尺寸与做法 南昌人吃泥鳅不pu开泥鳅肚子的吗? 请问南昌一共有几家大型的农贸批发市场, 哪里的泥鳅最好 泥鳅市场价多少钱一斤 沙鳅的价格为什么贵 淘宝洋淘秀在哪里发布?洋淘秀入口在哪? 千牛互动服务窗怎么用?有哪些注意事项? 淘宝秋新短视频怎么参加?注意事项有哪些? 猜你喜欢商家素材优化商家参与SOP 合肥哪个区发展好 中考,安徽省定远一中达标分数线,求真实 我女朋友要过生日了,她让我送她酸奶,另外让我每天为她叠一个飞机,等... dye one's hair blue和 color on'e hair blue有什么区别? 1=1,2+3+4=9,3+4+5+6+7=25,4+5+6+7+8+9+10=49…照此规律,第n个等式为... acm考什么 中国越被侵略,领土越大,这话有道理吗 QQ显示手机在线和4g在线有什么区别 家用电脑装配监控需要下载什么软? 摄像头录像软件推荐,让你看清每个细节! 新买的冰箱多久换雪种 冰箱新购几年换雪种 房产所有权确权纠纷 姐弟买房,房产证是两人名字,产权各一半,弟出全资,姐起诉要一半房款,法 ... 房子是两兄弟的,另一个兄弟偷偷去办房产证都办自己名下,那另一个兄弟... 两兄弟以前合资造房,用其中一人姓名办了房产证,现在需要分开该怎么办... 双色球买24个红球多少钱 双色球可以只买红球不买篮球吗 双色球复式买26个红号加一个兰号多少钱 2011金鸡百花电影节赵薇唱的主题歌是什么 手机财付通明细怎么查 怎么查到财付通里的交易记录? irqlnotlessorequal蓝屏如何处理_处理irqlnotlessorequal蓝屏有哪些方法... 朗润的解释是什么? 朗润造句子怎么造朗润造句 把下列词语分别造句;朗润 酝酿 卖弄