问题描述

小ww生活在美丽的ZZ国。ZZ国是一个有nn个城市的大国,城市之间有mm条单向公路(连 接城市ii、jj的公路只能从ii连到jj)。城市ii、jj是友好城市当且仅当从城市ii能到达城市jj并 且从城市jj能到达城市ii。如果kk个城市两两互为友好城市,那么我们称这kk个城市是友好 城市群,kk为友好城市群的大小。现在小ww想知道友好城市群的大小最大为多少,你能告诉 他吗?

输入格式

第一行包含两个整数nn 和mm。

接下来mm 行,每行两个整数ii和jj,表示有从城市ii到城市jj的一条单向公路。

输出格式

共一行一个整数表示答案。

输入样例

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≤100n,m≤100

对于80%的数据,n≤1000, m≤100000n≤1000, m≤100000

对于100%的数据,n,m≤100000

题目分析

我定睛一看就把Tarjan这糟老头子拽出来了:你特么又变着法子考我?然后我就写完了代码,下面献上。

代码实现

#include<bits/stdc++.h>
using namespace std;
#define IL inline
#define int long long
#define RE register int
#define N 100001
int m,n,cnt,tim,ans;
int head[N],dfn[N],low[N];
stack<int>s;
bitset<N>vis;
struct aa{int v,next;}e[N<<];
IL void addedge(RE u,RE v){
e[++cnt]=(aa){v,head[u]},head[u]=cnt;
}IL void Tarjan(RE u){
dfn[u]=low[u]=++tim,vis[u]=,s.push(u);
for (RE v,i=head[u];i;i=e[i].next){
if (!dfn[v=e[i].v]) Tarjan(v),low[u]=min(low[u],low[v]);
else if (vis[v]) low[u]=min(low[u],dfn[v]);
}if (dfn[u]==low[u]){
RE sum=;
do{++sum,vis[s.top()]=,s.pop();}while(s.top()^u);
ans=max(ans,sum);
}
}
signed main(){
// freopen("friend.in","r",stdin),freopen("friend.out","w",stdout);
cin>>n>>m;
for (RE i=,u,v;i<=m;++i)
cin>>u>>v,addedge(u,v);
for (RE i=;i<=n;++i) if (!dfn[i]) Tarjan(i);
cout<<ans;
}

代码分析

第一次交没有AC,因为我们的评测机爆炸了。注意退栈的操作,这一题不需要缩点,大家学了网络流对Tarjan会懂得更多的。

我还要写什么呢,睡觉去了.

【Noip模拟 20161005】友好城市的更多相关文章

  1. 【Noip模拟 20161005】运货

    问题描述 小ww开了一家快递公司,在nn个城市之间进行货物运输工作,一共雇了mm个快递员. 每个快递员性格很奇特,第ii号快递员只愿意将货物从城市sisi运送到titi(甚至不愿意将货物 从titi运 ...

  2. 1003 NOIP 模拟赛Day2 城市建设

    题面不好找放一个吧. Description 描述 在有$N$个地级市的H省,政府为了城市开发建设,决定先修路,后造房子,以吸引外来人员.一开始每个城市中有$b_i$个住户,而在两个城市$u,v$之间 ...

  3. 【Noip模拟 20161005】公约数

    问题描述 小ww最近仔细研究了公约数,他想到了以下问题:现有nn个正整数,从中选k(2≤k≤n)k(2≤k≤n) 个,设这kk个数的最大公约数为gg,则这kk个数的价值为k×gk×g.求这个价值的最大 ...

  4. NOIP模拟题 友好国度

    题目大意 给定一棵树,每个点有点权,求有多少组点对满足两点简单路径上的所有点点权的$gcd=1$. $n,val_i\leq 10^5$ 题解 考虑设$G_i$表示简单路径上所有点点权均为$i$的倍数 ...

  5. 【JZOJ5064】【GDOI2017第二轮模拟day2】友好城市 Kosarajo算法+bitset+ST表+分块

    题面 在Byteland 一共有n 座城市,编号依次为1 到n,这些城市之间通过m 条单向公路连接. 对于两座不同的城市a 和b,如果a 能通过这些单向道路直接或间接到达b,且b 也能如此到达a,那么 ...

  6. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

  7. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  8. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  9. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

随机推荐

  1. ros6.44版本增加了测试出两台ROS之间的速度极限是多少

    原文: https://wiki.mikrotik.com/wiki/Manual:Tools/Speed_Test [admin@MikroTik]] > /tool speed-test a ...

  2. 第一次有人把小米9快充讲的这么简单明了qc3.0 usb pd

    原文: http://www.chongdiantou.com/wp/archives/32093.html 2019年2月20日,小米在北京工业大学体育馆举办了盛况空前的小米9手机发布会,会上雷军揭 ...

  3. [UE4]Text Block文字字体偏移

    这样看起来就像是真正的垂直居中对齐了.

  4. linux下软件安装知识整理

    一.软件包安装分类源码包二进制包(RPM包,系统默认包)源码包优点1.开源 可以自由选择所需的功能    软件是编译安装,适合自己系统,更加稳定,效率更高    卸载方便 缺点 安装过程步骤较多,容易 ...

  5. bootstraptable学习(2)分页

    1.分页需要配置一些参数 function init() { $('#bootstrapModel').bootstrapTable({ url: "../Listing.ashx" ...

  6. sas spawner

    注册spawner 服务"c:\Program Files\SASHome\SASFoundation\9.4\cntspawn.exe" -install -service 51 ...

  7. BCGcontrolBar(二) 改变RIBBON字体

    在xp系统下 BCGcontrolBar字体会发虚 这时候重新设置下字体就行了 在单文档的MainFram的onCreate中加入 CFont *font=m_wndRibbonBar.GetFont ...

  8. HBase配置性能调优

    因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果.所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 配置优化 zo ...

  9. Python多进程vs多线程

    多任务的两种方式:多进程和多线程. 如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker. 如果用多线程实现Master-Worker,主线程就是Master, ...

  10. c# webBrowser全掌握

    一.获取网页源代码 1.不含有框架 string s=WB1.DocumentText;  //webbrowser1命名为WB1,下同 2.含有框架 引用mshtml;          //位置C ...