友好城市

【问题描述】
小 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.

tarjan强连通分量模板(pascal)的更多相关文章

  1. hdu1269 Tarjan强连通分量 模板(转)

    #include<stdio.h> #include<iostream> #include<vector> using namespace std; ; vecto ...

  2. Tarjan强连通分量模板

    最好还是看一看下面这个网址吧 我的这篇博客里的代码更加缜密(毫无错误的神级代码)https://www.cnblogs.com/Tidoblogs/p/11315153.html https://ww ...

  3. Tarjan 强连通分量 及 双联通分量(求割点,割边)

    Tarjan 强连通分量 及 双联通分量(求割点,割边) 众所周知,Tarjan的三大算法分别为 (1)         有向图的强联通分量 (2)         无向图的双联通分量(求割点,桥) ...

  4. tarjan 强连通分量

    一.强连通分量定义 有向图强连通分量在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly c ...

  5. 1051: [HAOI2006]受欢迎的牛 (tarjan强连通分量+缩点)

    题目大意:CodeVs2822的简单版本 传送门 $Tarjan$强连通分量+缩点,若连通块的个数等于一则输出n:若缩点后图中出度为0的点个数为1,输出对应连通块内的点数:否则输出0: 代码中注释部分 ...

  6. 求强连通分量模板(tarjan算法)

    关于如何求强连通分量的知识请戳 https://www.byvoid.com/blog/scc-tarjan/ void DFS(int x) { dfn[x]=lowlink[x]=++dfn_cl ...

  7. 算法模板——Tarjan强连通分量

    功能:输入一个N个点,M条单向边的有向图,求出此图全部的强连通分量 原理:tarjan算法(百度百科传送门),大致思想是时间戳与最近可追溯点 这个玩意不仅仅是求强连通分量那么简单,而且对于一个有环的有 ...

  8. tarjan求强连通分量模板

    什么是强连通分量? 百度百科 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(stro ...

  9. bzoj1051: [HAOI2006]受欢迎的牛(tarjan强连通分量)

    强连通缩下点,出度为0有多个答案为0,否则答案为出度为0的强连通分量中点的个数. 发现一道tarjan模板题,顺便复习一波tarjan #include<iostream> #includ ...

随机推荐

  1. # 20155327 2016-20017-3 《Java程序设计》第3周学习总结

    教材学习内容总结 第四章 认识对象 区分基本类型与类类型 基本类型: 1.整数:包括int,short,byte,long ,初始值为0 2.浮点型:float,double ,初始值为0.0 3.字 ...

  2. day1 ORM

    ORM对象关系映射 映射关系: 表名 <-------> 类名 字段 <-------> 属性 表记录 <------->类实例对象 class Customer( ...

  3. angularJS ng-repeat中的directive 动态加载template

    有个需求,想实现一个html组件,传入不同的typeId,渲染出不同的表单元素. <div ng-repeat="field in vm.data"> <magi ...

  4. runtime如何实现weak属性

    首先了解weak是一种非拥有关系,属性所值对象销毁时,属性值会清空(nil). Runtime对注册的类会进行布局,对于weak对象会放入hash表中,用weak指向的内存地址作为key,当对象引用计 ...

  5. phpldapadmin具体设置

    一.需求    1.属性隐藏 只显示用户名,部门(因为是单OU设计为了做区分),登录密码 2.属性顺序显示 部门>用户名>登录密码 3.使用UID可以登陆 用户可以使用账户(自己的名字)登 ...

  6. Twitter推广消息可使品牌线下销售额增长三成

    新浪科技讯 北京时间8月9日上午消息,Twitter周四宣布,该公司的推广消息(Promoted Tweet)可以让品牌的线下销售增长29%. 此外,Twitter当天还推出了一个新项目,让品牌可以追 ...

  7. 如何报FOB价格

    FOB价格是当货物越过船舷,卖方即完成交货.FOB价格术语仅适用于海运或内河运输.在国际贸易中,FOB价格是比较常用的一种,FOB价格作为众多贸易中的一种需要外贸人员熟悉掌握. FOB价格是当货物越过 ...

  8. 4.hive的外部表和内部表

    1.外部表和内部表区别 创建表时:创建内部表时,会将数据移动到数据仓库指向的路径:若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变. 删除表时:在删除表的时候,内部表的元数据和数据会被一 ...

  9. Scrum立会报告+燃尽图(十月十七日总第八次)

    本次作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 一.小组介绍 组名:杨老师粉丝群 组长:乔静玉 组员:吴奕瑶.公 ...

  10. c语言的知识与能力自评

    知识与能力 C语言最早是由美国Bell实验室设计的,主要用作UNIX系统的工作语言,后来发展成为一种通用语言.C与UNIX有密切的关系,C最早是在PDP机器上用UNIX操作系统上开发的,后来又用C语言 ...