Description

每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头牛被所有的牛认为是受欢迎的。

Input

第一行两个数N,M。 接下来M行,每行两个数A,B,意思是A认为B是受欢迎的(给出的信息有可能重复,即有可能出现多个A,B)

Output

一个数,即有多少头牛被所有的牛认为是受欢迎的。

Sample Input

3 3
1 2
2 1
2 3

Sample Output

1

HINT

100%的数据N<=10000,M<=50000

#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
const int MAXN = 50010;
struct Edge
{int f, t;
}es[MAXN];
int first[MAXN], nxt[MAXN], scc_cnt, sccnum[MAXN], scctong[MAXN], low[MAXN];
stack < int > s;
int n, m, pre[MAXN], dfs_clock, cd[MAXN], tot = 1;
int ff[MAXN], tt[MAXN];void build(int f, int t)
{es[++tot].t = t;nxt[tot] = first[f];first[f] = tot;
}void dfs(int u)
{pre[u] = low[u] = ++dfs_clock;s.push(u);for(int i = first[u]; i ; i = nxt[i]){int v = es[i].t;if(!pre[v]){dfs(v);low[u] = min(low[u], low[v]);}else if(!sccnum[v]){low[u] = min(low[u], pre[v]);}} if(low[u] == pre[u]){scc_cnt++;for(;;){int x = s.top();s.pop();sccnum[x] = scc_cnt;scctong[scc_cnt]++;if(x == u)break;}}
}int main()
{scanf("%d%d", &n, &m);for(int i = 1; i <= m; i++){scanf("%d%d", &ff[i], &tt[i]);build(ff[i], tt[i]);}   for(int i = 1; i <= n; i++)if(!pre[i])dfs(i);for(int i = 1; i <= m; i++){if(sccnum[ff[i]] != sccnum[tt[i]]){cd[sccnum[ff[i]]]++;}}int ans = 0, tot = 0;for(int i = 1; i <= scc_cnt; i++){if(cd[i] == 0){ans += scctong[i];tot ++;}}if(tot == 1) printf("%d", ans);else printf("%d", 0);return 0;
} 

转载于:https://www.cnblogs.com/Loi-Vampire/p/6017063.html

BZOJ 1051 || POJ 2186 受欢迎的牛 Tarjan相关推荐

  1. 算法提高课-图论-有向图的强连通分量-AcWing 1174. 受欢迎的牛:tarjan算法求强连通分量、tarjan算法板子、强连通图

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 强连通图:给定一张有向图.若对于图中任意两个结点x,y,既存在从x到y的路径,也存在从y到x的路径,则称该有向图是"强连通 ...

  2. BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1051 题意概括 有n只牛,有m个羡慕关系. 羡慕关系具有传递性. 如果A羡慕B,B羡慕C,那么我们 ...

  3. bzoj1051 [HAOI2006]受欢迎的牛 tarjan缩点

    题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢"是可以传递的--如果A喜 欢B,B喜 ...

  4. 【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 <= ...

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

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

  6. BZOJ 1051: [HAOI2006]受欢迎的牛

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

  7. BZOJ 1051 受欢迎的牛 缩点

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1051 题目大意: 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数( ...

  8. BZOJ 1051: [HAOI2006]受欢迎的牛【Trajan】

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛 ...

  9. BZOJ[1051]受欢迎的牛

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

  10. BZOJ 1051: [HAOI2006]受欢迎的牛 强连通分量,Tarjan缩点

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

最新文章

  1. oracle ORACLE_SID使用上的意义
  2. 反弹和补遗:再论Bjarne Stroustrup的基于对象的含义
  3. linux怎么修改sftp默认端口,如何在 Linux 系统中如何更改 SFTP 端口
  4. mybatis配置properties属性
  5. XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager,
  6. 存储过程C语言与PL/pgSQL实现的效率对比
  7. Google Chrome 最新市场份额
  8. python中format函数用法简书_Python format 格式化函数
  9. java creat sql,java 实体类 生成 create sql
  10. (第24讲)java小程序——Applet
  11. 【日常学习——论文写作】毕业论文的查重
  12. SD卡简单介绍(个人笔记)杜绝垃圾堆里刨食
  13. WoShop跨境电商国际支付Paypal支付商城全开源无加密商城源码
  14. unity中Animator controller无法给动作添加motion的问题
  15. DM数据库开启归档模式的三种方式
  16. (原创)23种设计模式一网打尽,看这篇就够了!
  17. [有限元分析] fluent-固体传热分析
  18. [附源码]SSM计算机毕业设计游戏装备交易网站论文2022JAVA
  19. 实名认证api接口的类型有哪些
  20. 【每日早报】2019/08/05

热门文章

  1. 【Linux】常用命令之 awk 常用实例
  2. 资源 | 有没有必要把机器学习算法自己实现一遍?
  3. 机器学习—关联规则分析之Apriori算法及其python实现
  4. 数据科学包9-pandas高级内容之数据IO
  5. 《流畅的Python第二版》读书笔记——字典和集合
  6. Kubernetes入门——k8s概念和架构
  7. 算法刷题指南,来自GitHub 68.8k star的硬核算法教程
  8. 一文读懂响应式编程到底是什么?
  9. 头衔的权威暗示影响力
  10. 《网络营销实战密码》书评征文获奖名单揭晓