题目链接:http://poj.org/problem?id=2186

求有多少个点满足其他n-1个点都能到达这个点,是单向图;

所以我们可以把图进行缩点,之后求出度为0的那个点内包含的点的个数就是求得答案;

如果出度为0的不止一个,那么答案为0;

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#define N 10010
#define Lson r*2
#define Rson r*2+1
#define INF 0xfffffff
using namespace std; int Stack[N], top, Out[N], Time, flag;
int nBlock, Block[N], dfn[N], low[N], Is[N], n, Head[N], cnt; struct Edge
{
int v, next;
}e[N*N];
void Init()
{
nBlock = cnt = top = Time = flag = ;
memset(Head, -, sizeof(Head));
memset(low, , sizeof(low));
memset(dfn, , sizeof(dfn));
memset(Block, , sizeof(Block));
memset(Out, , sizeof(Out));
memset(Is, , sizeof(Is));
memset(Stack, , sizeof(Stack));
}
void Add(int u, int v)
{
e[cnt].v=v;
e[cnt].next=Head[u];
Head[u]=cnt++;
}
void Tajar(int u)
{
dfn[u]=low[u]=++Time;
Is[u]=;
Stack[top++]=u;
int v;
for(int i=Head[u]; i!=-; i=e[i].next)
{
v=e[i].v;
if(!dfn[v])
{
Tajar(v);
low[u]=min(low[u], low[v]);
}
else if(Is[v])
{
low[u]=min(low[u], dfn[v]);
}
}
if(low[u]==dfn[u])
{
++nBlock;
do
{
v=Stack[--top];
Is[v] = ;
Block[v]=nBlock;
}while(u!=v);
}
}
int main()
{
int u, v, m;
while(scanf("%d%d", &n, &m)!=EOF)
{
Init();
for(int i=; i<m; i++)
{
scanf("%d%d", &u, &v);
Add(u,v);
}
for(int i=; i<=n; i++)
if(!low[i])
{
Tajar(i);
}
for(int i=; i<=n; i++)
{
for(int j=Head[i]; j!=-; j=e[j].next)
{
u=Block[i]; v=Block[e[j].v];
if(u!=v)
Out[u]++;
}
}
flag=;
int Index;
for(int i=; i<=nBlock; i++)
{
if(Out[i]==)
{
flag++;
Index=i;
}
}
if(flag>)
{
printf("0\n");
continue;
}
int ans=;
for(int i=; i<=n; i++)
{
if(Block[i]==Index)
ans++;
}
printf("%d\n", ans);
}
return ;
}

Popular Cows---poj2186(缩点,强联通)的更多相关文章

  1. (连通图 缩点 强联通分支)Popular Cows -- poj --2186

    http://poj.org/problem?id=2186 Description Every cow's dream is to become the most popular cow in th ...

  2. POJ 2168 Popular cows [Tarjan 缩点]

                                                                                                         ...

  3. USACO 2003 Fall Orange Popular Cows /// tarjan缩点 oj22833

    题目大意: n头牛,m个崇拜关系,并且崇拜具有传递性 如果a崇拜b,b崇拜c,则a崇拜c 求最后有几头牛被所有牛崇拜 强连通分量内任意两点都能互达 所以只要强联通分量内有一点是 那么其它点也都会是 按 ...

  4. [poj2186]Popular Cows(targin缩点)

    题意:求其他所有牛都认为其牛的牛的个数. 解题关键:targin算法模板题,缩点形成一棵树,并不一定是棵树,可能含有多个入度为0的点,寻找出度为0的点(缩点之后的点)的个数,如果个数大于0,则无解,否 ...

  5. POJ 2186 Popular cows(SCC 缩点)

    Every cow's dream is to become the most popular cow in the herd. In a herd of N (1 <= N <= 10, ...

  6. POJ 2186 Popular Cows tarjan缩点算法

    题意:给出一个有向图代表牛和牛喜欢的关系,且喜欢关系具有传递性,求出能被所有牛喜欢的牛的总数(除了它自己以外的牛,或者它很自恋). 思路:这个的难处在于这是一个有环的图,对此我们可以使用tarjan算 ...

  7. POJ 2186 Popular Cows(强联通+缩点)

    Description Every cow's dream is to become the most popular cow in the herd. In a herd of N (1 <= ...

  8. 强连通分量tarjan缩点——POJ2186 Popular Cows

    这里的Tarjan是基于DFS,用于求有向图的强联通分量. 运用了一个点dfn时间戳和low的关系巧妙地判断出一个强联通分量,从而实现一次DFS即可求出所有的强联通分量. §有向图中, u可达v不一定 ...

  9. POJ 2186 Popular Cows (强联通)

    id=2186">http://poj.org/problem? id=2186 Popular Cows Time Limit: 2000MS   Memory Limit: 655 ...

  10. 【Tarjan缩点】POJ2186 Popular Cows

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 35644   Accepted: 14532 De ...

随机推荐

  1. Python C :ctypes库

    >>> import ctypes >>> from ctypes import * >>> dir(ctypes) ['ARRAY', 'Arg ...

  2. 使用avahi 的mdns服务发现server

    avahi-browse -a 可以查看局域网内所有的mdns服务, avahi-browse -r _xxxxx._tcp

  3. Shell脚本中$0、$?、$!、$$、$*、$#、$@等的意义

    http://blog.csdn.net/slovyz/article/details/47400107

  4. HTML5 直播技术

    https://segmentfault.com/a/1190000010440054

  5. 工作流JBPM_day01:4-管理流程定义

    工作流JBPM_day01:4-管理流程定义 管理流程(流程定义) 部署(添加) 查询 删除 查看流程图(xxx.png) -- 修改 --> 没有真正的修改,而是使用“再次部署+使用最新版本启 ...

  6. eclipse中debug模式不能启动运行,run运行模式却能启动运行!

    这个问题我郁闷了好久!问题原因:因为断点太多了,断点冲突了. 解决办法:只要进如deug界面,选择BreakPoints选项,然后清除所有断点,再重新debug启动.问题解决! 希望能帮到遇到此问题的 ...

  7. 【RF库Collections测试】Dictionary Should Contain Sub Dictionary

    Name:Dictionary Should Contain Sub DictionarySource:Collections <test library>Arguments:[ dict ...

  8. C++类中的static数据成员,static成员函数

    C++类中谈到static,我们可以在类中定义static成员,static成员函数!C++primer里面讲过:static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在, ...

  9. MyEclipse10配置PyDev进行Python开发

    MyEclipse10配置PyDev进行Python开发 1.下载PyDev 2.7.1  链接如下:    http://jaist.dl.sourceforge.net/project/pydev ...

  10. java高级---->Thread之CountDownLatch的使用

    CountDownLatch是JDK 5+里面闭锁的一个实现,允许一个或者多个线程等待某个事件的发生.今天我们通过一些实例来学习一下它的用法. CountDownLatch的简单使用 CountDow ...