BZOJ 1051 || POJ 2186 受欢迎的牛 Tarjan
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 3Sample 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相关推荐
- 算法提高课-图论-有向图的强连通分量-AcWing 1174. 受欢迎的牛:tarjan算法求强连通分量、tarjan算法板子、强连通图
文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 强连通图:给定一张有向图.若对于图中任意两个结点x,y,既存在从x到y的路径,也存在从y到x的路径,则称该有向图是"强连通 ...
- BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点
欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1051 题意概括 有n只牛,有m个羡慕关系. 羡慕关系具有传递性. 如果A羡慕B,B羡慕C,那么我们 ...
- bzoj1051 [HAOI2006]受欢迎的牛 tarjan缩点
题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢"是可以传递的--如果A喜 欢B,B喜 ...
- 【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 <= ...
- BZOJ 1051 受欢迎的牛(Tarjan缩点)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4573 Solved: 2428 [Submit][S ...
- BZOJ 1051: [HAOI2006]受欢迎的牛
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 7120 Solved: 3779 [Submit][S ...
- BZOJ 1051 受欢迎的牛 缩点
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1051 题目大意: 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数( ...
- BZOJ 1051: [HAOI2006]受欢迎的牛【Trajan】
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛 ...
- BZOJ[1051]受欢迎的牛
Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也 ...
- BZOJ 1051: [HAOI2006]受欢迎的牛 强连通分量,Tarjan缩点
Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也 ...
最新文章
- oracle ORACLE_SID使用上的意义
- 反弹和补遗:再论Bjarne Stroustrup的基于对象的含义
- linux怎么修改sftp默认端口,如何在 Linux 系统中如何更改 SFTP 端口
- mybatis配置properties属性
- XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager,
- 存储过程C语言与PL/pgSQL实现的效率对比
- Google Chrome 最新市场份额
- python中format函数用法简书_Python format 格式化函数
- java creat sql,java 实体类 生成 create sql
- (第24讲)java小程序——Applet
- 【日常学习——论文写作】毕业论文的查重
- SD卡简单介绍(个人笔记)杜绝垃圾堆里刨食
- WoShop跨境电商国际支付Paypal支付商城全开源无加密商城源码
- unity中Animator controller无法给动作添加motion的问题
- DM数据库开启归档模式的三种方式
- (原创)23种设计模式一网打尽,看这篇就够了!
- [有限元分析] fluent-固体传热分析
- [附源码]SSM计算机毕业设计游戏装备交易网站论文2022JAVA
- 实名认证api接口的类型有哪些
- 【每日早报】2019/08/05