pku 2186 Popular Cows (tarjan缩点)
http://poj.org/problem?id=2186
将所有最大连通分量缩点,然后统计缩点后每个点的出度,出度为0的肯定就是了可是这个点可能是缩出来的,所以要记录这个点真正包含的点数。如果出度为0的点大于1个说明不存在
稍微尝试了一下stl的vector和stack #include <cstdio>#include <cstring>#include <vector>#include <stack>#include <iostream>#define maxn 10017using namespace std;int low[maxn],dfn[maxn],val[maxn],out[maxn];bool instack[maxn];int belong[maxn];int bcnt,index;int n,m;vector<int>g[maxn];stack<int>s;void init(){for (int i = 0; i < maxn; ++i) { g[i].clear(); low[i] = dfn[i] = belong[i] = val[i] = out[i] = 0; instack[i] = false; } index = bcnt =0;}void tarjan(int i){int j,k; low[i] = dfn[i] = ++index; s.push(i); instack[i] = true;for (k = 0; k < g[i].size(); ++k) { j = g[i][k];if (!dfn[j]) { tarjan(j); low[i] = min(low[i],low[j]); }else if (instack[j]) { low[i] = min(low[i],dfn[j]); } }if(low[i] == dfn[i]) { bcnt++;do { j = s.top(); s.pop(); instack[j] = false; belong[j] = bcnt; val[bcnt]++;//记录缩点后的点真正拥有的点 } while (j != i); }}void solve(){int count = 0,i,j;for (i = 1; i <= n; ++i) {if (!dfn[i]) tarjan(i); }for (i = 1; i <= n; ++i) {for (j = 0; j < g[i].size(); ++j) {int k = g[i][j];if (belong[i] != belong[k])out[belong[i]]++; } }int t = 0;for (i = 1; i <= bcnt; ++i) {if (!out[i]) { count++; t = i; } }if (count > 1) puts("0");else printf("%d\n",val[t]);}int main(){//freopen("d.txt","r",stdin); int x,y,i;while (cin>>n>>m) { init();for (i = 1; i <= m; ++i) { cin>>x>>y; g[x].push_back(y); } solve(); }return 0;}
转载于:https://www.cnblogs.com/E-star/archive/2012/02/14/2351123.html
pku 2186 Popular Cows (tarjan缩点)相关推荐
- Poj 2186 Popular Cows(Tarjan 强连通缩点)
传送门:Poj 2186 题意:给你n头牛,m种关系,A牛认为B牛是popular的,B牛认为C牛是popular的,则A也认为C是popular的,问最终有几头被所有牛认为是popular的牛 题解 ...
- POJ - 2186 Popular Cows(强连通缩点)
题目链接:点击查看 题目大意:给出n只奶牛,以及m组可传递的关系,每组关系给出一个a和一个b,表示为a->b,意思是奶牛a觉得奶牛b很酷,因为关系可传递,所以如果a->b且b->c, ...
- POJ-2186 Popular Cows (Tarjan缩点) 文末有测试数据
题目链接 NNN个牛,MMM个关系 (A,B)A(A,B)A(A,B)A认为BBB是受欢迎的.求受所有牛欢迎的牛的数量. 思路 同一个强联通分量里面的牛是相互受欢迎的,我们将所有的联通分量求出来之后, ...
- POJ 2186 Popular Cows(强连通分量缩点,Tarjan算法)
[题目链接] http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=16578 [解题报告] 给你一个有向图,问你有多少个点可以被其它 ...
- POJ 2186 Popular Cows(Tarjan)
http://poj.org/problem?id=2186 题意 :给你n头牛,m对关系,每对关系由两个编号组成,u和v代表着u认为v是受欢迎的,如果1认为2是受欢迎的,2认为3是受欢迎的,那1认为 ...
- POJ 2186 Popular Cows (强联通分量)
链接 :http://poj.org/problem?id=2186 一个联通分量里的所有的牛满足任何一个被其他牛认为是红人.强联通缩点之后 只需要找到一个且只有一个联通分量且它的出度为0 答案就是这 ...
- POJ 2186 Popular Cows
POJ_2186 这个题目其实就是求完强连通分量之后,判断一下出度为0的强连通分量是否唯一,如果唯一输出该强连通分量的点数,否则输出0. 由于之前求强连通分量的时候是把同一个强连通分量里的数放到一个数 ...
- 【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 <= ...
- Popular Cows POJ - 2186(tarjan算法)+详解
题意: 每一头牛的愿望就是变成一头最受欢迎的牛.现在有 N头牛,给你M对整数(A,B),表示牛 A认为牛B受欢迎.这种关系是具有传递性的,如果 A认为 B受欢迎, B认为 C受欢迎,那么牛 A也认为牛 ...
最新文章
- xcode6 dyld_sim is not owned by root
- [原创]辽宁移动通信-话费余额查询
- 深度剖析Java数据结构之表(二)——List接口
- SFTP服务的使用!!
- 300G的python资料等着你
- mysql 中时间和日期函数应用
- LINUX C获取并设置环境变量
- Python程序发布(打包)及pyInstaller、cx_Freeze工具使用介绍
- matlab 控制声卡,用MATLAB和声卡实现T型波信号发生器的设计方法
- 我的开发环境配置经验
- java开发团队认知_一个优秀的研发团队应该具备什么特征
- ftp上传软件,推荐5款好用的ftp上传软件
- IJCAI 2022 | 量化交易相关论文(附论文链接)
- Edit Control响应全选(Ctrl+A)
- 用混合编程实现两个LED交替闪烁
- OpenCV python去除图片水印
- 【Jeoy‘ s daily 】AcWing 1275. 最大数 线段树
- Linux mysql5.7安装-超级详细
- 计算机er保研选网络安全方向怎么样?
- 【如何成为一名优秀的项目经理】跟着本文8个步骤走下去
热门文章
- 零基础怎么玩转可视化大屏?这个工具只需5步!
- 深度解析艾瑞咨询《2017年度中国商业智能行业研究报告》
- AIR通过mx:html访问本地image
- linux+awk过滤端口,Awk简单过滤[1]
- 哪几所大学计算机软件方面是强项,计算机软件工程专业排名靠前的大学是那几所...
- 一键加速去不掉加锁的_十年斑点去不掉,大妈巧用蜂蜜擦脸,皮肤白净还年轻...
- (第五章)统计函数分组
- python参数的解包(拆包)(一分钟读懂)
- php验证规则表单,PHP Yii框架之表单验证规则大全
- java ee笔试题_【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)