题目地址:

https://www.luogu.com.cn/problem/P2341

题目描述:
每头奶牛都梦想成为牛棚里的明星。被所有奶牛喜欢的奶牛就是一头明星奶牛。所有奶牛都是自恋狂,每头奶牛总是喜欢自己的。奶牛之间的“喜欢”是可以传递的——如果AAA喜欢BBB,BBB喜欢CCC,那么AAA也喜欢CCC。牛栏里共有NNN头奶牛,给定一些奶牛之间的爱慕关系,请你算出有多少头奶牛可以当明星。

输入格式:
第一行:两个用空格分开的整数:NNN和MMM。
接下来MMM行:每行两个用空格分开的整数:AAA和BBB,表示AAA喜欢BBB。

输出格式:
一行单独一个整数,表示明星奶牛的数量。

数据范围:
对于10%10\%10%的数据,N≤20N\le20N≤20,M≤50M\le50M≤50。
对于30%30\%30%的数据,N≤103N\le10^3N≤103,M≤2×104M\le2\times 10^4M≤2×104。
对于70%70\%70%的数据,N≤5×103N\le5\times 10^3N≤5×103,M≤5×104M\le5\times 10^4M≤5×104。
对于100%100\%100%的数据,1≤N≤1041\le N\le10^41≤N≤104,1≤M≤5×1041\le M\le5\times 10^41≤M≤5×104。

可以用Tarjan算法先对图缩点,这样就可以看缩点后的出度为000的点有多少个,如果不唯一,则没有奶牛可以当明星。否则看一下出度为000的点的size即可。思路参考https://blog.csdn.net/qq_46105170/article/details/116681582。代码如下:

#include <iostream>
#include <cstring>
using namespace std;const int N = 1e4 + 10, M = 5e4 + 10;
int n, m;
int h[N], e[M], ne[M], idx;
int dfn[N], low[N], timestamp;
int stk[N], top;
bool in_stk[N];
int id[N], scc_cnt, sz[N];
int dout[N];void add(int a, int b) {e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}void tarjan(int u) {dfn[u] = low[u] = ++timestamp;stk[top++] = u, in_stk[u] = true;for (int i = h[u]; ~i; i = ne[i]) {int v = e[i];if (!dfn[v]) {tarjan(v);low[u] = min(low[u], low[v]);} else if (in_stk[v]) low[u] = min(low[u], dfn[v]);}if (dfn[u] == low[u]) {scc_cnt++;int y;do {y = stk[--top];in_stk[y] = false;id[y] = scc_cnt;sz[scc_cnt]++;} while (y != u);}
}int main() {memset(h, -1, sizeof h);scanf("%d%d", &n, &m);while (m--) {int a, b;scanf("%d%d", &a, &b);add(a, b);}for (int i = 1; i <= n; i++)if (!dfn[i]) tarjan(i);for (int i = 1; i <= n; i++)for (int j = h[i]; ~j; j = ne[j])if (id[i] != id[e[j]])dout[id[i]]++;int zero = 0, res;for (int i = 1; i <= scc_cnt; i++) {if (!dout[i]) {if (++zero > 1) {res = 0;break;}res = sz[i];}}printf("%d\n", res);
}

时间复杂度O(N+M)O(N+M)O(N+M),空间O(N)O(N)O(N)。

【洛谷】P2341 受欢迎的牛相关推荐

  1. 洛谷 P2341 - 受欢迎的牛

    题目描述 P2341 [USACO03FALL][HAOI2006]受欢迎的牛 G 解法: 首先,明确一下什么是明星奶牛:受欢迎的牛只可能是图中唯一的出度为0的强连通分量中的所有奶牛. 为什么? 强连 ...

  2. 洛谷P2341 受欢迎的牛

    题目链接:https://www.luogu.org/problem/show?pid=2341 解题思路: 1.首先可以想到在一个联通块内的牛都可以成为明星奶牛(互相喜欢).这样我们就可以把它们缩成 ...

  3. 洛谷 2341受欢迎的牛

    洛谷  2341受欢迎的牛 废话真多啊,就是tarjan一遍,缩强连通分量点,建好新的图之后查看是否有出度为0的点. 如果有且仅有一个,那么这一个一定是可以被所有牛喜欢的啦,用cnt数组去记录每一个强 ...

  4. 洛谷·[HAOI2006]受欢迎的牛

    初见安~这里是传送门:洛谷P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢" ...

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

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

  6. 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)

    P2341 [HAOI2006]受欢迎的牛|[模板]强连通分量 https://www.luogu.org/problem/P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就 ...

  7. 解题报告:luogu P2341 受欢迎的牛(Tarjan算法,强连通分量判定,缩点,模板)

    题目链接:洛谷 受欢迎的牛 基本上算是一道模板题 根据题意,如果有环,意味着这个环里的牛都互相喜欢 我们可以先求出环,然后把每一个环都看作一个点,这样整个图就变成了一个DAG(有向无环图) 看有几个点 ...

  8. 洛谷 P2341 [HAOI2006]受欢迎的牛

    题目 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢" ...

  9. 洛谷 P2341 【HAOI2006】受欢迎的牛

    题目链接 https://www.luogu.org/problem/P2341 分析 Tarjan缩点,最后DAG中,唯一的出度为 000 的点的大小即为答案. AC代码 #include < ...

最新文章

  1. vb小工具-----txt转为excel
  2. [BZOJ3668][Noi2014]起床困难综合症 贪心
  3. ubuntu下最简单的MySQL安装教程
  4. 大数据挖掘在销售管理中的应用价值
  5. nginx配置https以及出现的各种问题
  6. ACMer的AC福音!手动扩栈外挂!(防止栈溢出)
  7. mui ajax 文件上传,MUI的图片上传和压缩
  8. Android 功耗(18)---android省电和提高效率
  9. 这些互联网巨头,明年可能会纷纷杀入AI芯片战局
  10. SpringBoot------拦截器Filter的使用
  11. abcde类 ip地址_IP寻址基础,让你了解IP地址ABCDE类的区分
  12. 计算机中丢失msvcr100.dll怎么办,Win7计算机中Msvcr100.dll丢失的解决方法
  13. The <Router /> component appears to be a function component that returns报错解决方式
  14. 日常猜幸运数字小游戏
  15. 罗永浩和锤子手机:对不起,我被你打动了
  16. access 有效性规则和有效性文本
  17. (转)周鸿祎产品秘笈:小版本成就大产品
  18. 计网复习——第三章 数据链路层
  19. Vue--nextTick--作用/用法/原理
  20. 计算机网络应用基础教学计划,高一计算机网络应用基础教学计划

热门文章

  1. 模式识别学习笔记(2)——贝叶斯决策
  2. vue中百度地图标注
  3. python在openstreetmap地图上绘制路线图
  4. 魅族 系统更新服务器,魅族系统终于迎来更新,涉及虽少但有大变更,你准备好了吗?...
  5. 人脸识别系统——OpenCV人脸检测
  6. 助力智能制造,TUV莱茵亮相2018工博会
  7. div实现简单的页面布局
  8. npm 升级_网易云音乐解锁变灰,自动签到听歌升级,npm等等vip加密格式音乐解锁...
  9. 给飞行中的飞机换发动机
  10. 苹果6s解除耳机模式_三星,苹果最好的损友!从3GS损到iPhone 12从不留情