poj2186-Popular Cows【Tarjan】+(染色+缩点)(经典)
<题目链接>
题目大意:
解题分析:
仔细思考后发现,其实题目就是问你,在给出的这个有向图中的所有连通分量中,是否存在唯一出度为0的连通分量,如果存在,则输出这个连通分量中所有点的个数。
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <map>
using namespace std; #define pb push_back
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define clr(a,b) memset(a,b,sizeof(a))
const int N = 1e4+ , M = 5e4+; struct Edge{ int from,to,nxt; }e[M<<];
int n,m,cnt,tot,scc,top;
int stk[N],instk[N],head[N],dfn[N],low[N],bel[N],out[N]; inline void init(){
cnt=tot=scc=top=;
clr(head,-);clr(dfn,);clr(low,);clr(bel,);
clr(out,);clr(instk,);
}
inline void add(int u,int v){
e[++cnt]=(Edge){u,v,head[u]};head[u]=cnt;
}
void Tarjan(int u){
dfn[u]=low[u]=++tot;
instk[u]=,stk[++top]=u;
for(int i=head[u];~i;i=e[i].nxt){
int v=e[i].to;
if(!dfn[v]){
Tarjan(v);
low[u]=min(low[u],low[v]);
}else if(instk[v])low[u]=min(low[u],dfn[v]);
}
if(dfn[u]==low[u]){
++scc;
while(true){
int v=stk[top--];
instk[v]=;
bel[v]=scc;
if(v==u)break;
}
}
}
inline void Solve(){
rep(i,,cnt){
int u=e[i].from,v=e[i].to;
if(bel[u]!=bel[v]){
out[bel[u]]++; //统计每个强连通分量的出度
}
}
int num=,loc=-;
rep(i,,scc){
if(!out[i])num++,loc=i;
}
if(num==){
int ans=;
rep(i,,n) if(bel[i]==loc){
ans++;
}
printf("%d\n",ans);
}else puts("");
}
int main(){
while(~scanf("%d%d",&n,&m)){
init();
rep(i,,m){
int u,v;scanf("%d%d",&u,&v);
add(u,v);
}
rep(i,,n) if(!dfn[i]){
Tarjan(i);
}
Solve();
}
}
2018-08-16
poj2186-Popular Cows【Tarjan】+(染色+缩点)(经典)的更多相关文章
- POJ2186 Popular Cows [强连通分量|缩点]
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 31241 Accepted: 12691 De ...
- 强连通分量tarjan缩点——POJ2186 Popular Cows
这里的Tarjan是基于DFS,用于求有向图的强联通分量. 运用了一个点dfn时间戳和low的关系巧妙地判断出一个强联通分量,从而实现一次DFS即可求出所有的强联通分量. §有向图中, u可达v不一定 ...
- 洛谷——P2341 [HAOI2006]受欢迎的牛//POJ2186:Popular Cows
P2341 [HAOI2006]受欢迎的牛/POJ2186:Popular Cows 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所 ...
- 【Tarjan缩点】POJ2186 Popular Cows
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 35644 Accepted: 14532 De ...
- POJ-2186 Popular Cows,tarjan缩点找出度为0的点。
Popular Cows 题意:一只牛崇拜另外一只牛,这种崇拜关系可以传导.A->B,B->C =>A->C.现在给出所有的关系问你有多少牛被其他所有的牛都崇拜. 思路:就是一 ...
- POJ 2168 Popular cows [Tarjan 缩点]
...
- POJ2186 Popular Cows 【强连通分量】+【Kosaraju】+【Tarjan】+【Garbow】
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 23445 Accepted: 9605 Des ...
- poj 2186 Popular Cows (强连通分量+缩点)
http://poj.org/problem?id=2186 Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissi ...
- POJ 2186:Popular Cows Tarjan模板题
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 25945 Accepted: 10612 De ...
- POJ 2186 Popular Cows(Targin缩点)
传送门 Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 31808 Accepted: 1292 ...
随机推荐
- C static struct
参考链接: http://blog.csdn.net/keyeagle/article/details/6708077/ NOTICE: 静态全局变量 与 普通的全局变量的区别 static 全 ...
- 解决ping 127.0.0.1 一般故障 问题
故障如下图: 绕了好一大圈才发现是goupi防火墙搞的鬼,弄得我一些软件一直运行不了!!!!! 废话不多说,关了防火墙就行了:操作步骤如下图示 关闭之后,美滋滋:
- python cookbook 笔记二
去重和排序: #coding=utf-8 def dedupe(items): seen = set() for item in items: if item not in seen: yield i ...
- Jetson tk1 安装 Intel 7260 无线网卡驱动
Jseton TK1上没有集成的无线网卡,开发板上有一个mini pci-e接口,可以插入Intel 7260这款继承了wifi和蓝牙功能的无线网卡: 该网卡实物如下图,在淘宝和Amazon上都可以买 ...
- ubuntu 14.04界面美化
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABVYAAAMACAIAAABAXKuVAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xu
- centos 设置定时任务执行指定脚本的方法
vim /etc/crontab SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/ # For details se ...
- maven配置文件setting.xml
1.Maven本地仓库<localRepository>D:\DevTools\maven_Analytics\mavenrepo</localRepository> 2.网络 ...
- 基于TLS的EAP 认证方法
TLS: transport level security , 安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性.该协议由两层组成: TLS 记录协议(TLS Record)和 TLS ...
- MariaDB:删除数据库报错:error: 'Error dropping database (can't rmdir './shiro', errno: 39)'
今天在删除一个库的时候报错,如下图所示. 删除命名:mysqladmin –u root –p drop shiro 解决办法: 删除./shiro目录下面的所有文件和目录. 重新执行删除命令即可!
- DDMS调试工具
ADT给我们提供了一个非常方便的调试工具,那就是DDMS.使用这个工具,代码调试工作也变得简单起来.我们只需要单击Eclipse界面右上方的DDMS按钮就可以切换到DDMS界面了,如图2-31所示. ...