【HAOI2006】【BZOJ1051】【p1233】最受欢迎的牛
BZOJ难得的水题(其实是HA太弱了)
原题:
求强连通分量,缩点,搞成DAG,唯一一个出度为0的点就是答案
为什么呐
缩点后每个强连通块内部肯定是能互相到达的,而且强连通块是DAG没有环,所以如果整个DAG是连通的,那么唯一一个出度为零的强连通块一定会被其他所有强连通块覆盖(因为图是连通的而且没有环)
(似乎涉及到覆盖问题都可以用缩点搞)
需要注意的问题:
1.注意图不一定连通!!!
2.需要判断DAG是否连通,如果有多个点出度为0,答案就是0,因为这样子就没有任何一个强连通块能被其他所有强连通块覆盖
画图模拟很好理解
这题在BZOJ上WA了好几遍,全是低级错误,代码能力还要再提升
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int read(){int z=,mark=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')mark=-; ch=getchar();}
while(ch>=''&&ch<=''){z=(z<<)+(z<<)+ch-''; ch=getchar();}
return z*mark;
}
struct ddd{int next,y;}e[];int LINK[],ltop=;
inline void insert(int x,int y){e[++ltop].next=LINK[x];LINK[x]=ltop;e[ltop].y=y;}
ddd DAG[]; int DLINK[],Dltop=; int Dcd[];
inline void Dinsert(int x,int y){DAG[++Dltop].next=DLINK[x];DLINK[x]=Dltop;DAG[Dltop].y=y; Dcd[x]++;}
int n,m;
int low[],dfn[],bu=;
int zhan[],top=;
bool visited[];
int group[],id=;
int ge[];
void Tarjian(int x){
zhan[++top]=x; visited[x]=true;
low[x]=dfn[x]=++bu;
for(int i=LINK[x];i;i=e[i].next){
if(!dfn[e[i].y]){
Tarjian(e[i].y);
low[x]=min(low[x],low[e[i].y]);
}
else if(visited[e[i].y])
low[x]=min(low[x],dfn[e[i].y]);
}
if(dfn[x]==low[x]){
id++;
int temp;
do{
temp=zhan[top--];
visited[temp]=false;
group[temp]=id;
ge[id]++;
}while(temp!=x);
}
}
void get_DAG(){
for(int i=;i<=n;i++)
for(int j=LINK[i];j;j=e[j].next)
if(group[i]!=group[e[j].y])
Dinsert(group[i],group[e[j].y]);
}
int main(){//freopen("ddd.in","r",stdin);
memset(visited,,sizeof(visited));
memset(dfn,,sizeof(dfn));
memset(ge,,sizeof(ge));
cin>>n>>m;
int _left,_right;
while(m --> ){//趋向于
_left=read(); _right=read();
insert(_left,_right);
}
for(int i=;i<=n;i++)if(!dfn[i]) Tarjian(i);//注意图不一定连通!!!
get_DAG();
int temp=;
for(int i=;i<=id;i++)if(Dcd[i]==){
if(temp){ temp=; break;}//防止DAG不连通,这样子就没有任何一个强连通块能被其他所有强连通块覆盖
else temp=i;
}
cout<<ge[temp]<<endl;
return ;
}
【HAOI2006】【BZOJ1051】【p1233】最受欢迎的牛的更多相关文章
- 【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: [HAOI2006]受欢迎的牛(tarjan板子)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6064 Solved: 3179[Submit][Sta ...
- [BZOJ1051][HAOI2006] 受欢迎的牛 tarjan求联通分量
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5687 Solved: 3016[Submit][Sta ...
- [Bzoj1051][HAOI2006]受欢迎的牛(缩环)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6676 Solved: 3502[Submit][Sta ...
- bzoj1051: [HAOI2006]受欢迎的牛(强联通)
1051: [HAOI2006]受欢迎的牛 题目:传送门 题解: 今天又做一道水题... 强联通啊很明显 水个模板之后统计一下每个强联通分量中点的个数,再统计一下出度... 不难发现:缩点之后当且仅当 ...
- 【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受 ...
随机推荐
- android 禁止viewPager 滑动
public class ContainerViewPager extends MyViewPager { public ContainerViewPager(Context context, Att ...
- AutoReleasePool 和 ARC 以及Garbage Collection
AutoReleasePool autoreleasepool并不是总是被auto 创建,然后自动维护应用创建的对象. 自动创建的情况如下: 1. 使用NSThread的detachNewThread ...
- (转)innerHTML、innerText和outerHTML、outerText的区别
原文:http://walsh.iteye.com/blog/261966 innerHTML.innerText和outerHTML.outerText的区别 博客分类: CSS/ ...
- 2016 - 1- 22 Build a Nav bar (intro to HTML&CSS)
一:Learn how to build a NavBar --- allow user navigate ur site 1. The hypetext refrence link This att ...
- __set()与__get() 魔术方法
在面向对象编程的过程中,对于类当中的各个成员变量,都有不同的访问属性,比如公有的(public)属性,在类内部和类外部都可直接调用:而私有的(private)和受保护的(protected),在类外不 ...
- AD管理命令
repadmin /showrepl 显示复制协议 dcdiag /test:dns
- iBatis框架简介
一.为啥使用iBatis? 在 Hibernate.JPA 这样的一站式对象 / 关系映射(O/R Mapping)解决方案盛行之前,iBaits 基本是持久层框架的不二选择.即使在持久层框架层出不穷 ...
- web.config的数据库连接字符串进行加密
连接参考:http://wenku.baidu.com/link?url=nwGug8wxz143A4pvBE_kN6vMU7aF3ojwCKJOyN-TQleZ07iAYrjx_FnFVDOtZAF ...
- 转:Repeater嵌套绑定Repeater以及内层调用外层数据
<table border=" style="margin-bottom: 5px" width="100%"> <asp:Repe ...
- 用UltralSO安装CentOS 和 Ubuntu
UltralSO是一个U盘制作工具,这几天用UltralSO安装了CentOS和Ubuntu 制作这两个U盘启动程序的区别是,CentOS安装完后,需要把.iso文件拷贝到U盘中,而且CentOS文件 ...