BZOJ1051 受欢迎的牛
http://www.lydsy.com/JudgeOnline/problem.php?id=1051
Description
Input
Output
一个数,即有多少头牛被所有的牛认为是受欢迎的。
思路:求原图的强连通分量,缩点重构图,如果新DAG中仅存在1个出度为0的点,那么答案就是该强连通分量的包含的节点数,如果不存在这样的点或存在多个(存在多个说明不会有牛被所有牛欢迎),那么无解,输出0
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
using namespace std;
;
vector<int> G[maxn],G2[maxn],S;
int n,m,vis[maxn],book[maxn],bcc_nodes[maxn],bcc_count,out_edges[maxn];
void init(){
memset(vis,,sizeof(vis));
memset(book,,sizeof(book));
memset(bcc_nodes,,sizeof(bcc_nodes));
memset(out_edges,,sizeof(out_edges));
bcc_count=;
}
void dfs(int u){
vis[u]=;
;i<G[u].size();i++){
int go=G[u][i];
if(!vis[go]) dfs(go);
}
S.push_back(u);
}
void dfs2(int u){
book[u]=bcc_count;bcc_nodes[bcc_count]++;
;i<G2[u].size();i++){
int go=G2[u][i];
if(!book[go]) dfs2(go);
}
}
int main()
{
scanf("%d %d",&n,&m);
init();
;i<=m;i++){
int a,b;scanf("%d %d",&a,&b);
G[a].push_back(b);
G2[b].push_back(a);
}
;i<=n;i++) if(!vis[i]) dfs(i);
;i>=;i--) if(!book[S[i]]){
++bcc_count;dfs2(S[i]);
}
,ans=;
;i<=n;i++) ;j<G[i].size();j++) if(book[i]!=book[G[i][j]]){
out_edges[book[i]]=;break;
}
;i<=bcc_count;i++) if(!out_edges[i]) k++,ans+=bcc_nodes[i];
) printf("%d",ans);
");
;
}
BZOJ1051 受欢迎的牛的更多相关文章
- BZOJ1051:受欢迎的牛(并查集 / Tarjan)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 8161 Solved: 4460 Description ...
- p2341&bzoj1051 受欢迎的牛
传送门(洛谷) 传送门(bzoj) 题目 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C ...
- bzoj1051受欢迎的牛(Tarjan)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4776 Solved: 2542 Description ...
- 【bzoj1051】 [HAOI2006]受欢迎的牛 tarjan缩点判出度算点数
[bzoj1051] [HAOI2006]受欢迎的牛 2014年1月8日7450 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B ...
- 【BZOJ1051】[HAOI2006]受欢迎的牛
[BZOJ1051][HAOI2006]受欢迎的牛 题面 bzoj 洛谷 题解 假如\(A\)喜欢\(B\)就连一条\(A\)到\(B\)的边 然后缩点,如果图不连通就\(Impossible\) 否 ...
- bzoj1051 [HAOI2006]受欢迎的牛
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4773 Solved: 2541[Submit][Sta ...
- 【BZOJ1051】1051: [HAOI2006]受欢迎的牛 tarjan求强连通分量+缩点
Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认 ...
- [bzoj1051] [HAOI2006]受欢迎的牛 (Tarjan+缩点)
强连通图,缩点 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受 ...
- 【HAOI2006】【BZOJ1051】【p1233】最受欢迎的牛
BZOJ难得的水题(其实是HA太弱了) 原题: 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B ...
随机推荐
- 【转 】实战手记:让百万级数据瞬间导入SQL Server
想必每个DBA都喜欢挑战数据导入时间,用时越短工作效率越高,也充分的能够证明自己的实力.实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本文将向大家推荐一个挑战4秒极限让百万级数据瞬间 ...
- SecureCRT自动登录
- 20160720-java高并发
https://www.zhihu.com/search?type=content&q=tomcat+%E8%83%BD%E6%94%AF%E6%8C%81%E5%A4%9A%E5%B0%91 ...
- JAVA 对象的转型
/* 对象的转型: 1.对象的向上转型 子类转成父类 默认进行 父类引用指向子类对象 2.对象的向下转型 父类转成子类 强制进行 关键字:instanceof 测试左边对象是否是右边类的实例 如果是返 ...
- Guava 9-I/O
字节流和字符流 Guava使用术语”流” 来表示可关闭的,并且在底层资源中有位置状态的I/O数据流.术语”字节流”指的是InputStream或OutputStream,”字符流”指的是Reader ...
- input文本框实现宽度自适应代码实例
代码实例如下: <!DOCTYPE html> <html><head><meta charset="utf-8"><meta ...
- 程序员遇到Bug时的30个反应
开发应用程序是一个非常有压力的工作.没有人是完美的,因此在这个行业中,代码中出现bug是相当普遍的现象.面对bug,一些程序员会生气,会沮丧,会心烦意乱,甚至会灰心丧气,而另一些程序员会依然保持冷静沉 ...
- Python子类方法的调用(类方法)
class S(object): def Test(self): print("TEST") @classmethod def Test02(cls): print("c ...
- A - Red and Black(3.2.1)(小递归)
Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...
- 修改hive内存限制
错误: GB physical memory used; 4.7 GB of 2.1 GB virtual memory used. Killing container. Dump of the pr ...