友好城市

【问题描述】
小 w 生活在美丽的 Z 国。 Z 国是一个有 n 个城市的大国, 城市之间有 m 条单向公路(连接城市 i、 j 的公路只能从 i 连到 j)。 城市 i、 j 是友好城市当且仅当从城市 i 能到达城市 j 并且从城市 j 能到达城市 i。 如果 k 个城市两两互为友好城市, 那么我们称这 k 个城市是友好城市群, k 为友好城市群的大小。

现在小 w 想知道友好城市群的大小最大为多少, 你能告诉他吗?

【输入格式】
第一行包含两个整数 n 和 m。
接下来 m 行, 每行两个整数 i 和 j, 表示有从城市 i 到城市 j 的一条单向公路。

【输出格式】
共一行一个整数表示答案。

【输入输出样例】
输入:
10 12
3 7
1 2
4 5
7 10
10 8
6 8
2 1
3 8
10 3
6 8
7 3
4 1

输出:
3

【数据范围】
对于 30%的数据, n,m<=100
对于 80%的数据, n<=1000,m<=100000
对于 100%的数据, n,m<=100000

裸的tarjan强连通分量题,只是为了打个tarjan板子。(然而我也不是很懂tarjan算法的原理)

 program friend(input,output);
type
etype=record
t,next:longint;
end;
var
e:array[..]of etype;
a,dfn,low,q:array[..]of longint;
inq:array[..]of boolean;
n,m,i,x,y,cnt,top,ans:longint;
procedure add(x,y:longint);
begin
inc(cnt);e[cnt].t:=y;e[cnt].next:=a[x];a[x]:=cnt;
end;
procedure tarjan(k:longint);
var
i:longint;
begin
inc(cnt);dfn[k]:=cnt;low[k]:=cnt;
inc(top);q[top]:=k;inq[k]:=true;
i:=a[k];
while i<> do
begin
if dfn[e[i].t]= then begin tarjan(e[i].t);if low[e[i].t]<low[k] then low[k]:=low[e[i].t]; end
else if inq[e[i].t] and (dfn[e[i].t]<low[k]) then low[k]:=dfn[e[i].t];
i:=e[i].next;
end;
if dfn[k]=low[k] then
begin
i:=;
while q[top]<>k do begin inq[q[top]]:=false;dec(top);inc(i); end;
dec(top);inq[k]:=false;inc(i);
if i>ans then ans:=i;
end;
end;
begin
assign(input,'friend.in');assign(output,'friend.out');reset(input);rewrite(output);
readln(n,m);
fillchar(a,sizeof(a),);cnt:=;
for i:= to m do begin readln(x,y);add(x,y); end;
fillchar(dfn,sizeof(dfn),);
ans:=;
fillchar(inq,sizeof(inq),false);
for i:= to n do if dfn[i]= then begin cnt:=;top:=;tarjan(i); end;
write(ans);
close(input);close(output);
end.

最新文章

  1. nodejs express 静态文件的路径
  2. dwz 在dialog里打开dialog
  3. 记录对依赖注入的小小理解和autofac的简单封装
  4. macbook 我们需要买吗
  5. Xml序列化自引用/循环引用问题1
  6. Change the ball(找规律)
  7. Tomcat7配置数据源(Oracle)
  8. Qt5:Qt程序不在任务拦显示图标
  9. Problem - D - Codeforces Fix a Tree
  10. Python中执行系统命令常见的几种方法--转载
  11. 编译httpd细节
  12. Android中实现gif动画
  13. jQuery File Upload 图片上传解决方案兼容IE6+
  14. Opensource Licenses
  15. 6-12 油田 uva572
  16. Eclipse绿豆沙护眼
  17. clickableSpan实现textView文字部分点击有响应
  18. Linux 系统运维常用命令
  19. UFOV页面 使用canvas
  20. 简单的企业会议管理cms后台模板——后台

热门文章

  1. WPF MVVM从入门到精通5:PasswordBox的绑定
  2. 覆盖Django mysql model中save方法时碰到的一个数据库更新延迟问题
  3. 【BZOJ1951】[SDOI2010]古代猪文
  4. 修改Qt源码遇到的问题
  5. 在spring boot上基于maven使用redis——批量匹配并删除 (二)
  6. 近中期3D编程研究目标
  7. 自己动手做AI:Google AIY开发工具包解析
  8. vue关于img src动态赋值问题
  9. webpack Error: Cannot find module &#39;webpack/lib/Chunk&#39; Extract-text-webpack-plugin 分离CSS
  10. 【shell 每日一练7】一键安装mysql5.7,以及密码及策略修改