【强联通分量缩点】【Tarjan】bzoj1051 [HAOI2006]受欢迎的牛
就是看是否有一些点,从其他任何点出发都可到达
定理:有向无环图中唯一出度为0的点,一定可以由任何点出发均可达。
所以缩点,若出度为零的点(强联通分量)唯一,则答案为该强联通分量中点的度数。
若不唯一,答案为0,易证。
Code(懒得Tarjan,用了两次DFS):
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
vector<int>order;
int v[],first[],next[],en;
int a[],b[],scc[],num[],sum,chu[];
bool vis[];
int n,m;
inline void AddEdge(const int &U,const int &V){v[++en]=V;next[en]=first[U];first[U]=en;}
void Clear()
{
memset(v,,sizeof(v));
memset(first,,sizeof(first));
memset(next,,sizeof(next));
en=;
}
void dfs(int cur)
{
vis[cur]=true;
for(int i=first[cur];i;i=next[i])
if(!vis[v[i]])
dfs(v[i]);
order.push_back(cur);
}
void dfs2(int cur,int sum)
{
vis[cur]=true;
scc[cur]=sum;
num[sum]++;
for(int i=first[cur];i;i=next[i])
if(!vis[v[i]])
dfs2(v[i],sum);
}
void Scc()
{
for(int i=;i<=n;i++)
if(!vis[i])
dfs(i);
memset(vis,false,sizeof(vis));Clear();
for(int i=;i<=m;i++)AddEdge(b[i],a[i]);
int sz=order.size();
for(int i=sz-;i>=;i--)
if(!vis[order[i]])
dfs2(order[i],++sum);
}
int Exam()
{
int cnt=,Record;
for(int i=;i<=m;i++)
if(scc[a[i]]!=scc[b[i]])
chu[scc[a[i]]]++;
for(int i=;i<=sum;i++)
if(!chu[i])
{
cnt++;
Record=i;
if(cnt==)
return ;
}
return num[Record];
}
int res;char C;
inline int Get()
{
res=;C='*';
while(C<''||C>'')C=getchar();
while(C>=''&&C<=''){res=res*+(C-'');C=getchar();}
return res;
}
int main()
{
n=Get();m=Get();
for(int i=;i<=m;i++){a[i]=Get();b[i]=Get();AddEdge(a[i],b[i]);}
Scc();printf("%d\n",Exam());
return ;
}
【强联通分量缩点】【Tarjan】bzoj1051 [HAOI2006]受欢迎的牛的更多相关文章
- [BZOJ1051][HAOI2006] 受欢迎的牛 tarjan求联通分量
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5687 Solved: 3016[Submit][Sta ...
- [BZOJ1051] [HAOI2006] 受欢迎的牛 (强联通分量)
Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也 ...
- Tarjan求强联通分量+缩点
提到Tarjan算法就不得不提一提Tarjan这位老人家 Robert Tarjan,计算机科学家,以LCA.强连通分量等算法闻名.他拥有丰富的商业工作经验,1985年开始任教于普林斯顿大学.Tarj ...
- bzoj1051: [HAOI2006]受欢迎的牛(强联通)
1051: [HAOI2006]受欢迎的牛 题目:传送门 题解: 今天又做一道水题... 强联通啊很明显 水个模板之后统计一下每个强联通分量中点的个数,再统计一下出度... 不难发现:缩点之后当且仅当 ...
- bzoj1051 [HAOI2006]受欢迎的牛 tarjan&&缩点
题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C ...
- 【强联通分量缩点】【最长路】【spfa】CH Round #59 - OrzCC杯NOIP模拟赛day1 队爷的讲学计划
10分算法:对于城市网络为一条单向链的数据, 20分算法:对于n<=20的数据,暴力搜出所有的可能路径. 结合以上可以得到30分. 60分算法:分析题意可得使者会带着去的城市也就是这个城市所在强 ...
- 【最小割】【Dinic】【强联通分量缩点】bzoj1797 [Ahoi2009]Mincut 最小割
结论: 满足条件一:当一条边的起点和终点不在 残量网络的 一个强联通分量中.且满流. 满足条件二:当一条边的起点和终点分别在 S 和 T 的强联通分量中.且满流.. 网上题解很多的. #include ...
- bzoj1051: [HAOI2006]受欢迎的牛(tarjan板子)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6064 Solved: 3179[Submit][Sta ...
- [Bzoj1051][HAOI2006]受欢迎的牛(缩环)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6676 Solved: 3502[Submit][Sta ...
随机推荐
- 对象方法、类方法、原型方法 && 私有属性、公有属性、公有静态属性
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 003 CopyOnWriteArrayList原理
聊聊并发-Java中的Copy-On-Write容器 Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候 ...
- freemark基础知识
前言:使用freemarker对应生成一个html文件,保存到磁盘,访问文件就不一定使用tomcat,可以使用nginx(http服务器)访问.可以使用freemaker工具生成.只生成一次,html ...
- python_day4学习笔记
一.内置函数
- 【DUBBO】dubbo的Router接口
Router服务路由, 根据路由规则从多个Invoker中选出一个子集AbstractDirectory是所有目录服务实现的上层抽象, 它在list列举出所有invokers后,会在通过Router服 ...
- hdu 3488(KM算法||最小费用最大流)
Tour Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submis ...
- LeetCode Linked List Cyle
Problem Description Given a linked list, determine if it has a cycle in it. Follow up:Can you solve ...
- JS框架的实现
众多流行的JS库都不同程度的污染了原生JS,最典型的如Prototype ,Mootools .JQuery则完全例外,一个匿名函数执行后便诞生了集所有API为一身的强大 $ .虽然如此,JQuery ...
- CSS让文字在元素内绝对居中!!!【ie和谷歌】
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SpringMVC一些功能
1.日期格式转换 当页面提交日期格式时 默认的格式为2017/10/1 如果指定日期格式为2017-10-1 //初始化绑定日期格式--不定义初始化格式时只能默认用yyyy/MM/dd格式 @Init ...