首页 科普 资讯 养生 问答 找医院 相关问答
首页> 问答

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.
出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 商业代理商业代理的特征 如何看微信有没有开通微众银行 为什么微众没有开户 微众银行怎么开户 微众银行APP开户流程是什么? 唐古拉山海拔唐古拉山海拔是多少 怎么看待取消跳广场舞的人的退休金 如何选购新鲜的蓝田水柿? 恭城水柿柿树作用 创维洗衣机使用教程 创维全自动洗衣机怎么使用 自动开门器 狗羊属相婚姻相配吗 3岁的小孩不会说话怎么办 3岁孩子不会说话,应该挂什么科? 3岁小孩不会说话正常吗 鹿茸炖乌鸡怎么做? 新型冠状肺炎吃什么药可以预防 冰箱上电后一直响 食品生产许可证编号开头为“ G”。 库存过期香精 猎狐点卡平台经营范围 电影代理靠谱吗 兄弟三人,有什么好的QQ网名 租赁合同书范本简单版 简单房屋出租协议书模板 简单明了租房合同范本 租房合同书免费下载(实用6篇) 出租房屋合同 简洁的房屋租赁合同范本 阳光人寿保险是骗人吗? 三胎政策有那些配套措施有哪些 ...法院也立案了,可被没有可执行的财产怎么办,我的工资还能要回来吗... 离婚后析产案法院强制执行,对方说没有钱,我该怎么办 澳门为什么叫澳门? 新能源老年代步车锂电池 如何为职务侵占罪进行辩护 职务侵占如何辩护 职务侵占罪有效辩护点有哪些 miui11开发者选项在哪_小米miui11开发者选项在哪 查询考研成绩需要什么 考研查分前要做什么 考研查询需要什么证件 研究生什么专业好 什么专业的研究生最好 考研究生什么专业好 研究生学什么专业 宝石花的养殖方法介绍 宝石花怎么养才长得好 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蓝屏有哪些方法... 朗润的解释是什么? 朗润造句子怎么造朗润造句 把下列词语分别造句;朗润 酝酿 卖弄
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com