题目链接: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. iOS10.0 & Swift 3.0 对于升级项目的建议

    iOS & Swift新旧版本更替, 在Apple WWDC大会开始之际, 也迎来了iOS 10.0, Swift 3.0 测试版, 到目前为止, 已经是测试版2.0, 每次更新都带来了新的语 ...

  2. hadoop中文官网

    http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

  3. js表单计算金额问题

    <table width="600" border="1" align="center" style="text-align ...

  4. 静态变量数组实现LRU算法

    LRU算法的解释详情请见 https://baike.baidu.com/item/LRU/1269842 这里百度百科给出的比较详细,然后后面有一个例子 说 LRU(least recently u ...

  5. swift - 利用UIDatePicker实现定时器的效果

    效果图如下: 可以通过UIDatePicker调整倒计时的时间,然后点击UIButton开始倒计时,使用NSTimer进行倒计时的时间展示,我是声明了一个label也进行了标记, 然后点击按钮开始倒计 ...

  6. HTTP 基础术语

    URI 和 URL:URI用于标记一个网络资源,URL则表示这个网络资源的访问地址,详细说明 超文本:普通的一段文字叫做文本,如果给这段文字加上超链接,那么就叫做超文本,HTML 就是超文本标记语言 ...

  7. 理解Scroller

    任何一个控件都是可以滚动的,因为在View类当中有scrollTo()和scrollBy()这两个方法,但使用这两个方法完成的滚动效果是跳跃式的,没有任何平滑滚动的效果.而Scroller正是实现平滑 ...

  8. phpsession配置

    1. 介绍 1.1 作用: 主要用于服务器端的会话保持. 1.2 结构: Session分以下几部分: 1)Session id 用户Session的唯一标识(随机生成,具有唯一性,随机性) 2)Se ...

  9. poj_3261 后缀数组

    题目大意 给出一个数字串,找出其中至少重复K次的最长的子串长度. 题目分析 直接用后缀数组来求解,限制height[i]的长度来对排好序的后缀进行分组(这种方法经常在字符串问题中被使用).     先 ...

  10. VIM 插入

    不知道有多少VIM新手和我当年(去年)一样,信誓旦旦的以为只有i可以插入 唉,现在想想都觉得可笑,都是Windows下的编辑器用多了的结果 鼠标一点,妈妈再也不用担心我的文本插入了……悲剧! 好了,让 ...