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受欢迎. 这 种关系是具有传递性的,如 ...
随机推荐
- 9月23日JavaScript作业----用DIV做下拉列表
例题二.用div做下拉列表 <title>无标题文档</title> <style type="text/css"> *{ margin:0px ...
- ArcGIS Server开发教程系列(8)ArcGIS API for Javascript-控件(小部件)(续)纯代码
完整代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/ht ...
- 入门:PHP:hello world!
<?php echo 'hello'."\n"." world!"."good night!";//2016.09.18 22:57? ...
- codeforces 697B Barnicle
题目链接:http://codeforces.com/problemset/problem/697/B 题目大意: 将科学计数法用十进制表示.[如果类似于7.0应输出7] 解题思路: Java 中 B ...
- 对二进制加密(分散保存-s=sy+a+b)
#include <stdio.h> #define L 40 void jiaM(int * s,int * a,int *b,int *sy); void jieM(int * a,i ...
- docker快速启动脚本
#!/bin/sh PID=$(docker inspect --format "{{.State.Pid}}" $1) nsenter -t $PID -u -i -n -p n ...
- 关于linux发行版i386/i686/x86-64/的区别
http://blog.chinaunix.net/uid-20448327-id-172412.html
- new和alloc init的区别
背景说明,new是较为老式的写法,后来发现只有一个new不好使,才引入了alloc和init这种写 法,保留new一是向后兼容,二是很多时候是一种更简单的写法.其实是一样的,new在内部调用 的all ...
- apt-get整理(草稿)
1.apt-get这种方法下载的东西到哪了 参考网址:http://blog.csdn.net/magic881213/article/details/7692007 http://www.linux ...
- JS获取checkbox的个数
本文算是转载自网络,当时用了他的函数,现在想总结一下,但忘了原文地址了 ================================================================ ...