题目解析:

这题题意没什么好说的,解法也挺简单的,只要会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[1000001];
int head[N],low[N],dfn[N],f[N],instack[N],belong[N],s[N];
void init()
{memset(head,-1,sizeof(head));memset(instack,0,sizeof(instack));memset(belong,0,sizeof(belong));memset(sum,0,sizeof(sum));memset(f,0,sizeof(f));tt=0;cnt=0;
}
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]=1;s[++e]=i;for(int j=head[i]; j!=-1; j=eg[j].next){w=eg[j].y;if(!dfn[w]){tarjan(w);low[i]=min(low[i],low[w]);}else if(instack[w]==1){low[i]=min(low[i],dfn[w]);}}if(dfn[i]==low[i]){cnt++;do{w=s[e--];instack[w]=0;belong[w]=cnt;}while(w!=i);}
}
void solve()
{time=e=0;memset(dfn,0,sizeof(dfn));for(int i=1; i<=n; i++){if(!dfn[i]){tarjan(i);}}
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF){init();for(int i=1; i<=m; i++){scanf("%d%d",&a[i],&b[i]);add(a[i],b[i]);}solve();for(int i=1; i<=m; i++){if(belong[a[i]]!=belong[b[i]]){f[belong[a[i]]]=1;}}for(int i=1; i<=n; i++){sum[belong[i]]++;}int V=0,count;for(int i=1; i<=cnt; i++){if(!f[i]){V++;count=sum[i];}}if(V==1) printf("%d\n",count);else printf("0\n");}return 0;
}

POJ2186:Popular Cows(tarjan+缩点)相关推荐

  1. POJ-2186 Popular Cows (Tarjan缩点) 文末有测试数据

    题目链接 NNN个牛,MMM个关系 (A,B)A(A,B)A(A,B)A认为BBB是受欢迎的.求受所有牛欢迎的牛的数量. 思路 同一个强联通分量里面的牛是相互受欢迎的,我们将所有的联通分量求出来之后, ...

  2. pku 2186 Popular Cows (tarjan缩点)

    http://poj.org/problem?id=2186 将所有最大连通分量缩点,然后统计缩点后每个点的出度,出度为0的肯定就是了可是这个点可能是缩出来的,所以要记录这个点真正包含的点数.如果出度 ...

  3. 洛谷——P2341 [HAOI2006]受欢迎的牛//POJ2186:Popular Cows

    P2341 [HAOI2006]受欢迎的牛/POJ2186:Popular Cows 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所 ...

  4. Poj 2186 Popular Cows(Tarjan 强连通缩点)

    传送门:Poj 2186 题意:给你n头牛,m种关系,A牛认为B牛是popular的,B牛认为C牛是popular的,则A也认为C是popular的,问最终有几头被所有牛认为是popular的牛 题解 ...

  5. POJ2186 Popular Cows【Tarjan】【强连通分量】

    题目连接: http://poj.org/problem?id=2186 题目大意: 每头奶牛都希望自己成为最欢迎的那头牛.给你N头牛,M个崇拜关系(A,B).意思是牛A 崇拜牛B.特别是,如果牛A崇 ...

  6. POJ - 2186 Popular Cows(强连通缩点)

    题目链接:点击查看 题目大意:给出n只奶牛,以及m组可传递的关系,每组关系给出一个a和一个b,表示为a->b,意思是奶牛a觉得奶牛b很酷,因为关系可传递,所以如果a->b且b->c, ...

  7. 【POJ - 2186】Popular Cows (Tarjan缩点)

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

  8. Popular Cows POJ - 2186(tarjan算法)+详解

    题意: 每一头牛的愿望就是变成一头最受欢迎的牛.现在有 N头牛,给你M对整数(A,B),表示牛 A认为牛B受欢迎.这种关系是具有传递性的,如果 A认为 B受欢迎, B认为 C受欢迎,那么牛 A也认为牛 ...

  9. BZOJ 1051 受欢迎的牛(Tarjan缩点)

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4573  Solved: 2428 [Submit][S ...

最新文章

  1. python装饰器+迭代器+生成器
  2. Keepalived配置日志文件
  3. typora.io使用教程
  4. python借助missingno可视化分析缺失值
  5. Spring Security系列之Spring Social实现微信社交登录(九)
  6. Vue前端路由~非常详细哦,不要错过
  7. Dll中的方法向外返回dynamic类型可能会失败
  8. mac下charles使用教程
  9. PHP点餐系统源码附小程序点餐系统
  10. 如何提高maven的编译速度
  11. 高等数学:数列前后项【递推式的单调性】与【整个数列单调性】的关系
  12. 药品计算机数据备份管理制度,GMP丨《药品记录与数据管理要求》(试行)解读
  13. 环形队列、 条带环形队列 Striped-RingBuffer (史上最全)
  14. 【数据挖掘】-决策树算法+代码实现(七)
  15. vue项目中图片地址生成二维码
  16. 《虎虎圆桌派》第一期全程回顾
  17. 工商总局抽检电商 天猫1号店等仍存售假
  18. #RunJS# 最少代码的瀑布流实现
  19. 孤独真的能毁掉一个人吗?你孤独吗?
  20. 一本开源的程序员快速成长秘笈

热门文章

  1. 两个rtsp同时抓流_海康摄像头同时添加到两台海康硬盘录像机上
  2. SpringCloud_项目搭建以及Eureka
  3. 在Paddle中利用AlexNet测试CIFAR10数据集合
  4. 深度学习平台你知道多少?
  5. LM358的工作特性测试
  6. 第十五届全国大学生智能车竞赛百度深度学习车模
  7. 一款蓝牙音频无线传输设备上拆下的光电管
  8. 未解决计算机主机与打印机,电脑无法与打印机连接 计算机网考题目2(12)
  9. phoenix的元数据一般存在哪里_Phoenix常用操作记录-阿里云开发者社区
  10. 怎么体验华为鸿蒙系统,华为mate40升级鸿蒙系统体验_华为mate40升级鸿蒙系统使用感受...