题意:

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

思路:

tarjan缩点后找出度为0的点,若有1个,则是明星,超过1个则没有明星。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 5e4 + 10;
int n, m, h[N], cnt, d[N], x[N], y[N];
int dfn[N], low[N], ins[N], scc[N], inde;
stack<int> s;
struct node {int v, net;
} no[N];
void add(int u, int v) {no[cnt].v = v;no[cnt].net = h[u];h[u] = cnt++;
}
void tarjan(int u) {dfn[u] = low[u] = ++inde;s.push(u);ins[u] = 1;for(int i = h[u]; ~i; i = no[i].net) {int v = no[i].v;if(!dfn[v]) {tarjan(v);low[u] = min(low[u], low[v]);} else if(ins[v])low[u] = min(low[u], dfn[v]);}if(low[u] == dfn[u]) {while(s.top() != u) {int v = s.top();ins[v] = 0, scc[v] = u;s.pop();}ins[u] = 0, scc[u] = u;s.pop();}
}
int main() {memset(h, -1, sizeof h);cin >> n >> m;for(int i = 0; i < m; i++) {cin >> x[i] >> y[i];add(x[i], y[i]);}for(int i = 1; i <= n; i++)if(!dfn[i])tarjan(i);int ans = 0, ru = 0, root = -1;for(int i = 1; i <= n; i++)for(int j = h[i]; ~j; j = no[j].net) {int v = no[j].v;if(scc[i] != scc[v]) {d[scc[i]]++;//统计出度}}for(int i = 1; i <= n; i++)if(d[scc[i]] == 0 && root != scc[i])//防止同一个强连通分量的重复统计ru++, root = scc[i];//记录出度为0的个数if(ru > 1) {cout << 0;return 0;}for(int i = 1; i <= n; i++)if(scc[i] == root)//计算强连通分量有多少牛ans++;cout << ans;return 0;
}

P2341 [HAOI2006]受欢迎的牛 (tarjan缩点+出度)相关推荐

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

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

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

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

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

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

  4. 【luogu P2341 [HAOI2006]受欢迎的牛】 题解

    题解报告:https://www.luogu.org/problemnew/show/P2341 我们把图中的强连通分量缩点,然后只有出度为0的牛是受欢迎的,这样如果出度为0的牛只有一个,说明受所有牛 ...

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

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

  6. Luogu P2341 [HAOI2006]受欢迎的牛

    这道题应该也是经典的SCC题了吧 印象中不知道在在班里上课的时候在紫书,ACM竞赛的那些书上看到多少次(有点奇怪) 首先思路很明显,就是要找出有多少个点,以它们为起点可以遍历整个图 首先考虑一种情况, ...

  7. P2341 [HAOI2006]受欢迎的牛 强连通

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

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

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

  9. 【强连通】P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G

    P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G 判断强连通的关键是dfn与low. dfn记录的是节点dfs搜索时的dfs序,而low则是记录表示这个点以及其子孙节点连的 ...

最新文章

  1. python使用fpdf生成pdf文件章节(chapter),包含:页眉、页脚、章节主题、数据排版等;
  2. 万物皆可JOJO:这个GAN直接让马斯克不做人啦 !Demo在线可玩!
  3. 【分析总结】ASP.NET中的状态管理原理
  4. 常用的android弹出对话框
  5. Angular 7和.NET Core 2.2——全球天气(第3部分)
  6. Vue项目实例(一)------背景
  7. 删除 srvinstw安装的服务
  8. 单片机发射红外c语言程序,基于单片机的红外发射C语言程序
  9. 【北交所周报】北交所再迎8只新股;康普化学、凯华材料上市首日逆势大涨;康乐卫士过会,或成北交所最大IPO;北交所推出直联机制...
  10. brew upgrade出现It seems there is already an App at的解决方法
  11. SQL Server 设置IP地址登录方法
  12. JQuery UI combogrid
  13. 离散数学对学计算机有什么用
  14. 服务器购买之后要做什么(一)
  15. html页面记录访问次数
  16. java界面——可视化窗口入门级
  17. 零基础入门C 语言如何实现面向对象编程
  18. 第六届360前端星计划_前端代码的自我修养
  19. 华为总裁办紧急发文!两个鸿蒙别傻傻分不清!
  20. matlab PCA(Principal Component Analysis)主成分分析作图 2D|3D带有参数指向 案例

热门文章

  1. 【有关数据分析(一)】【数据分析最常用的18个概念】
  2. 万能的ogg转换mp3格式的小技巧 1
  3. 计算机办公软件应用课程大纲,Office办公软件-教学大纲
  4. Android 8.1 usb gadget configuration
  5. find5 刷安卓4.4 魔趣
  6. matlab 蒙特卡洛
  7. Linux内核实验孟宁,《linux内核分析》实验二:时间片轮转多道程序运行原理
  8. Vue里this指向
  9. 惊!女装大佬项目登 GitHub Top 1!
  10. 计算机字处理设置上标形式,大学计算机基础教程(冉崇善)第3章 word 2010文字处理.pptx...