POJ2186:Popular Cows(tarjan+缩点)
题目解析:
这题题意没什么好说的,解法也挺简单的,只要会tarjan算法+只有一个出度为0的强连通分量题目有解这题就迎刃而解了。
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
#define N 100002
using namespace std;
int n,m,tt,time,cnt,e,a[N],b[N],sum[N];
struct node
{
int x,y;
int next;
} eg[];
int head[N],low[N],dfn[N],f[N],instack[N],belong[N],s[N];
void init()
{
memset(head,-,sizeof(head));
memset(instack,,sizeof(instack));
memset(belong,,sizeof(belong));
memset(sum,,sizeof(sum));
memset(f,,sizeof(f));
tt=;
cnt=;
}
void add(int xx,int yy)
{
eg[tt].x=xx;
eg[tt].y=yy;
eg[tt].next=head[xx];
head[xx]=tt++;
}
void tarjan(int i)
{
int w;
dfn[i]=low[i]=++time;
instack[i]=;
s[++e]=i;
for(int j=head[i]; j!=-; j=eg[j].next)
{
w=eg[j].y;
if(!dfn[w])
{
tarjan(w);
low[i]=min(low[i],low[w]);
}
else if(instack[w]==)
{
low[i]=min(low[i],dfn[w]);
}
}
if(dfn[i]==low[i])
{
cnt++;
do
{
w=s[e--];
instack[w]=;
belong[w]=cnt;
}
while(w!=i);
}
}
void solve()
{
time=e=;
memset(dfn,,sizeof(dfn));
for(int i=; i<=n; i++)
{
if(!dfn[i])
{
tarjan(i);
}
}
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
for(int i=; i<=m; i++)
{
scanf("%d%d",&a[i],&b[i]);
add(a[i],b[i]);
}
solve();
for(int i=; i<=m; i++)
{
if(belong[a[i]]!=belong[b[i]])
{
f[belong[a[i]]]=;
}
}
for(int i=; i<=n; i++)
{
sum[belong[i]]++;
}
int V=,count;
for(int i=; i<=cnt; i++)
{
if(!f[i])
{
V++;
count=sum[i];
}
}
if(V==) printf("%d\n",count);
else printf("0\n");
}
return ;
}
POJ2186:Popular Cows(tarjan+缩点)的更多相关文章
- POJ 2168 Popular cows [Tarjan 缩点]
...
- [poj2186]Popular Cows(targin缩点)
题意:求其他所有牛都认为其牛的牛的个数. 解题关键:targin算法模板题,缩点形成一棵树,并不一定是棵树,可能含有多个入度为0的点,寻找出度为0的点(缩点之后的点)的个数,如果个数大于0,则无解,否 ...
- USACO 2003 Fall Orange Popular Cows /// tarjan缩点 oj22833
题目大意: n头牛,m个崇拜关系,并且崇拜具有传递性 如果a崇拜b,b崇拜c,则a崇拜c 求最后有几头牛被所有牛崇拜 强连通分量内任意两点都能互达 所以只要强联通分量内有一点是 那么其它点也都会是 按 ...
- POJ 2186 Popular Cows tarjan缩点算法
题意:给出一个有向图代表牛和牛喜欢的关系,且喜欢关系具有传递性,求出能被所有牛喜欢的牛的总数(除了它自己以外的牛,或者它很自恋). 思路:这个的难处在于这是一个有环的图,对此我们可以使用tarjan算 ...
- 强连通分量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.现在给出所有的关系问你有多少牛被其他所有的牛都崇拜. 思路:就是一 ...
- POJ2186 Popular Cows 【强连通分量】+【Kosaraju】+【Tarjan】+【Garbow】
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 23445 Accepted: 9605 Des ...
- POJ2186 Popular Cows [强连通分量|缩点]
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 31241 Accepted: 12691 De ...
随机推荐
- Google的基础设施安全
Google基础设施在设计时就确保了信息在整个生命周期内都是安全的.这里所说的安全涉及多个层面,包括服务部署.数据存储.进程与进程及外部系统之间的通信,以及运维层面. 物理层 ...
- schema in oracle
the conception of schema is different in different db software. here i just refer to oracle schema. ...
- Java web url 规范
设计URI应该遵循的原则 URI是网站UI的一部分,因此,可用的网站应该满足这些URL要求 简单,好记的域名 简短(short)的URI 容易录入的URI URI能反应站点的结构 URI是可以被用户猜 ...
- Java输入输出流(2)
6. Java.IO流类库 1. io流的四个基本类 java.io包中包括了流式I/O所须要的全部类. 在java.io包中有四个基本类:InputStream.OutputStream及Reade ...
- Android使用百度定位API时获取的地址信息为null
option.setAddrType("all"); //加上这个配置后才可以取到详细地址信息
- c/c++左值和右值
C/C++中的变量有左值和右值之分,他们的区别主要如下: (1)左值可以放在赋值号 = 的左右两边,右值只能放在赋值号 = 的右边 (2)在C语言中,有名字的变量即为左值:而函数的运行结果或表达式中间 ...
- Linux就是这个范儿之第一次亲密接触(2)
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 .作者信息和本声明.否则将追究法律责 1.2 不一样的图形操作 几乎所有Linux的新用户都会认为Linux的图形界面是相当的绚丽又多彩. ...
- CSS-布局样式之筛选条件右边线的处理方法(no CSS3)
先上图:
- apply的调用 http://bbs.51js.com/thread-82017-1-3.html
applay 这个是函数Function的方法为什么Array 也能调用这个函数?比如 function a (){ var kk = []; kk = ...
- SignalR实现在线聊天室功能
一.在线聊天室 1.新建解决方案 SignalROnlineChatDemo 2.新建MVC项目 SignalROnlineChatDemo.Web (无身份验证) 3.安装SignalR PM> ...