BZOJ 1051: [HAOI2006]受欢迎的牛
Description
一个有向图,求所以能被别的点到达的点的个数.
Sol
Tarjan + 强连通分量 + 缩点.
缩点以后找强连通分量,缩点,然后当图有且仅有1个出度为1的点时,有答案.
Code
- /**************************************************************
- Problem: 1051
- User: BeiYu
- Language: C++
- Result: Accepted
- Time:80 ms
- Memory:3044 kb
- ****************************************************************/
- #include<cstdio>
- #include<stack>
- #include<vector>
- #include<iostream>
- using namespace std;
- const int N = 10005;
- #define debug(a) cout<<#a<<"="<<a<<" "
- #define ct cout<<endl
- #define _ct cout<<"----------"<<endl
- int n,m,cnt,bcnt;
- int dfsn[N],low[N],ins[N],b[N],sz[N];
- vector<int> g[N];
- vector<int> h[N];
- stack<int> stk;
- struct Edge{ int fr,to; }edge[N*5];
- inline int in(int x=0,char ch=getchar()){ while(ch>'9'||ch<'0') ch=getchar();
- while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x; }
- void Tarjan(int u){
- dfsn[u]=low[u]=++cnt,ins[u]=1,stk.push(u);
- for(int i=0,lim=g[u].size(),v;i<lim;i++){
- v=g[u][i];
- if(!dfsn[v]){ Tarjan(v),low[u]=min(low[u],low[v]); }
- else if(ins[v]) low[u]=min(low[u],dfsn[v]);
- }if(dfsn[u]==low[u]){
- ++bcnt;int v;
- for(;;){ v=stk.top(),stk.pop(),ins[v]=0,b[v]=bcnt,sz[bcnt]++;if(u==v) break; }
- }
- }
- int main(){
- // freopen("in.in","r",stdin);
- n=in(),m=in();
- for(int i=1,u,v;i<=m;i++) u=in(),v=in(),g[u].push_back(v),edge[i]=(Edge){ u,v };
- for(int i=1;i<=n;i++) if(!dfsn[i]) Tarjan(i);
- // _ct;debug(bcnt),ct;
- for(int i=1,u,v;i<=m;i++){
- u=edge[i].fr,v=edge[i].to;
- // debug(u),debug(v),ct;
- // debug(b[u]),debug(b[v]),ct;
- if(b[u]!=b[v]) h[b[u]].push_back(b[v]);
- }
- // _ct;
- int tmp=0,ans=0;
- for(int i=1;i<=bcnt;i++){
- if(h[i].size()==0) ans=sz[i],tmp++;
- }
- if(tmp!=1) putchar('0');else printf("%d",ans);
- return 0;
- }
BZOJ 1051: [HAOI2006]受欢迎的牛的更多相关文章
- BZOJ 1051: [HAOI2006]受欢迎的牛 缩点
1051: [HAOI2006]受欢迎的牛 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- bzoj 1051: [HAOI2006]受欢迎的牛 tarjan缩点
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2092 Solved: 1096[Submit][Sta ...
- BZOJ 1051: [HAOI2006]受欢迎的牛( tarjan )
tarjan缩点后, 有且仅有一个出度为0的强连通分量即answer, 否则无解 ----------------------------------------------------------- ...
- BZOJ 1051: [HAOI2006]受欢迎的牛(SCC)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 8172 Solved: 4470[Submit][Sta ...
- 洛谷 P2341 BZOJ 1051 [HAOI2006]受欢迎的牛
题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C ...
- BZOJ 1051: [HAOI2006]受欢迎的牛 强连通缩点
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1051 题解: 强连通缩点得到DAG图,将图转置一下,对入度为零的点跑dfs看看能不能访问 ...
- bzoj 1051: [HAOI2006]受欢迎的牛 (Tarjan 缩点)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1051 思路: 首先用Tarjan把环缩成点,要想收到所有人的欢迎,那么这个点的出度必为0,且 ...
- bzoj 1051 [HAOI2006]受欢迎的牛(tarjan缩点)
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1051 题解:缩点之后判断出度为0的有几个,只有一个那么输出那个强连通块的点数,否者 ...
- 【BZOJ 1051】 1051: [HAOI2006]受欢迎的牛 (SCC)
1051: [HAOI2006]受欢迎的牛 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如 ...
随机推荐
- (转)深入理解Java中的final关键字
转自:http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方 ...
- Hash Table in C
http://www.sparknotes.com/cs/searching/hashtables/section3.rhtml http://en.literateprograms.org/Spec ...
- python中,ascii,unicode,utf8,gbk之间的关系梳理
在计算机中,经常遇到编码问题,本节主要梳理下ascii,unicode,utf8,gbk 这几种编码之间的关系. ASCII 计算机中,所有数据都以0和1来表示.在一开始的时候,要表示的内容比较少,人 ...
- oracle安装常见问题
版本信息:CentOS6.5 + oracle11G 1.监视器颜色错误: [oracle@bogon database]$ 正在启动 Oracle Universal Installer... 检查 ...
- sqlmap注入技巧收集
收集了一些利用Sqlmap做注入测试的TIPS,其中也包含一点绕WAF的技巧,便于大家集中查阅,欢迎接楼补充.分享. TIP1 当我们注射的时候,判断注入 http://site/script?id= ...
- OC-方法的声明和实现、匿名对象
方法声明: 方法调用: *冒号也是方法名的一部分 *同一个类中不允许两个对象方法同名 练习 给Car类设计一个方法,用来和其他车比较车速,如果快返回1,慢返回-1,相同返回0 #import < ...
- Working with Transactions (EF6 Onwards)
Data Developer Center > Learn > Entity Framework > Get Started > Working with Transactio ...
- 正确运用synchronized和二次判断 实现多线程安全
正确运用synchronized和二次判断 实现多线程安全,做出高效二符合预期的程序,特别是多个线程跑一个对象的时候,如下图所示: 测试代码如下: 特别注意if(shutdownRequested) ...
- CSS样式表继承详解
最近在恶补css样式表的基础知识.上次研究了css样式表之冲突问题详解 .这次是对 css 继承 特性的学习. 什么是css 继承?要想了解css样式表的继承,我们先从文档树(HTML DOM)开始. ...
- Win8/Win10无法打开这个应用 内置管理员账户
现在装win10系统的同伴越来越多了,相比于win7,win10在某些设置方面也有些变化,比如我们在使用win8或者win10时,会碰到如图所示的对话框: Windows10/Windows8无法使用 ...