【Noip模拟 20161005】友好城市
问题描述
小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】友好城市的更多相关文章
- 【Noip模拟 20161005】运货
问题描述 小ww开了一家快递公司,在nn个城市之间进行货物运输工作,一共雇了mm个快递员. 每个快递员性格很奇特,第ii号快递员只愿意将货物从城市sisi运送到titi(甚至不愿意将货物 从titi运 ...
- 1003 NOIP 模拟赛Day2 城市建设
题面不好找放一个吧. Description 描述 在有$N$个地级市的H省,政府为了城市开发建设,决定先修路,后造房子,以吸引外来人员.一开始每个城市中有$b_i$个住户,而在两个城市$u,v$之间 ...
- 【Noip模拟 20161005】公约数
问题描述 小ww最近仔细研究了公约数,他想到了以下问题:现有nn个正整数,从中选k(2≤k≤n)k(2≤k≤n) 个,设这kk个数的最大公约数为gg,则这kk个数的价值为k×gk×g.求这个价值的最大 ...
- NOIP模拟题 友好国度
题目大意 给定一棵树,每个点有点权,求有多少组点对满足两点简单路径上的所有点点权的$gcd=1$. $n,val_i\leq 10^5$ 题解 考虑设$G_i$表示简单路径上所有点点权均为$i$的倍数 ...
- 【JZOJ5064】【GDOI2017第二轮模拟day2】友好城市 Kosarajo算法+bitset+ST表+分块
题面 在Byteland 一共有n 座城市,编号依次为1 到n,这些城市之间通过m 条单向公路连接. 对于两座不同的城市a 和b,如果a 能通过这些单向道路直接或间接到达b,且b 也能如此到达a,那么 ...
- NOIP模拟题汇总(加厚版)
\(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
随机推荐
- mysql 之审计 init-connect+binlog完成审计功能
mysql基于init-connect+binlog完成审计功能 目前社区版本的mysql的审计功能还是比较弱的,基于插件的审计目前存在于Mysql的企业版.Percona和MariaDB上,但是my ...
- linux下打开文件、编辑文本cat\gedit\nano
cat: 文本编辑器:gedit.nano,要获得根权限,在前面加上sudo
- c#语言函数
class Program {访问修饰符 函数名(参数1,参数2){ 函数体 return 返回值} 无参数,无返回值 public static void abc() ...
- Hadoop分布式文件系统HDFS
HDFS的探究: HDFS HDFS是 Hadoop Distribute File System的缩写,是谷歌GFS分布式文件系统的开源实现,Apache Hadoop的一个子项目,HDFS基于流数 ...
- web框架原理
web框架的原理: 所有的web应用其实本质上就是socket服务端,而我们的浏览器就是socket客户端. 那么知道了这个之后我们就可以基于socket来写一个我们的服务端: import sock ...
- bzoj3252: 攻略(贪心)
/* 因为权值都是正的, 所以贪心的正确性能保证 然后重链贪心跑一下就好了 */ #include<cstdio> #include<algorithm> #include&l ...
- 请求(Request)的参数(Param)里包含特殊字符(#等)的正确处理方式
当调用restful接口,并且url中有参数传过去时,比如http://test.com?param=woshi#miaoyinga. 后台在使用@RequestParam("param&q ...
- python协程的使用
1.Python对协程的支持是通过generator(生成器 yield)实现的.协程执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行. 2.调用生成器运行的过程中 ...
- 《算法》第四章部分程序 part 13
▶ 书中第四章部分程序,包括在加上自己补充的代码,图的前序.后序和逆后续遍历,以及传递闭包 ● 图的前序.后序和逆后续遍历 package package01; import edu.princeto ...
- PostgreSQL (简称gp)小集
1. SQLyog & Navicat SQLyog可以管理 MySQL Navicat 可以管理 SQL Server,MySQL,PostgreSQL,SQLite 2. 日期及加减 no ...