BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点
欢迎访问~原文出处——博客园-zhouzhendong
去博客园看该题解
题目传送门 - BZOJ1051
题意概括
有n只牛,有m个羡慕关系。
羡慕关系具有传递性。
如果A羡慕B,B羡慕C,那么我们认为A也羡慕C。
问有多少牛被所有其他牛羡慕。
题解
这次做这题我已经是第三遍了。
USACO经典老题啊!(奶牛)
POJ上面也有,叫popular cow。
做法:
先Tarjan强连通缩个点。
然后,统计下入度。
统计入度为0的点数。如果点数大于1,那么答案明显是0。
如果点数是1,那么答案就是唯一的入度为0的点在缩点前点的个数。
代码
#include <cstring> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cmath> using namespace std; const int N=10000+5,M=50000+5; struct Gragh{int cnt,x[M],y[M],nxt[M],fst[N];void set(){cnt=0;memset(fst,0,sizeof fst);}void add(int a,int b){x[++cnt]=a,y[cnt]=b;nxt[cnt]=fst[a],fst[a]=cnt;} }g; int n,m; int dfn[N],low[N],st[N],time,ans,top,bh[N],cnt[N]; bool inst[N],vis[N]; void Tarjan_Prepare(){time=ans=top=0;memset(bh,0,sizeof bh);memset(st,0,sizeof st);memset(dfn,0,sizeof dfn);memset(low,0,sizeof low);memset(vis,0,sizeof vis);memset(inst,0,sizeof inst); } void Tarjan(int x){dfn[x]=low[x]=++time;vis[x]=inst[x]=1;st[++top]=x;for (int i=g.fst[x];i;i=g.nxt[i])if (!vis[g.y[i]]){Tarjan(g.y[i]);low[x]=min(low[x],low[g.y[i]]);}else if (inst[g.y[i]])low[x]=min(low[x],low[g.y[i]]);if (low[x]==dfn[x]){ans++;bh[st[top]]=ans;inst[st[top]]=0;while (st[top--]!=x){bh[st[top]]=ans;inst[st[top]]=0;}} } int main(){g.set();scanf("%d%d",&n,&m);for (int i=1,a,b;i<=m;i++){scanf("%d%d",&a,&b);g.add(a,b);}Tarjan_Prepare();for (int i=1;i<=n;i++)if (!vis[i])Tarjan(i);memset(cnt,0,sizeof cnt);for (int i=1;i<=m;i++)if (bh[g.x[i]]!=bh[g.y[i]])cnt[bh[g.x[i]]]++;int which=-1;for (int i=1;i<=ans;i++)if (cnt[i]==0){if (which!=-1){printf("0");return 0;}which=i;}int Ans=0;for (int i=1;i<=n;i++)if (bh[i]==which)Ans++;printf("%d",Ans);return 0; }
转载于:https://www.cnblogs.com/zhouzhendong/p/BZOJ1051.html
BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点相关推荐
- bzoj1051 [HAOI2006]受欢迎的牛 tarjan缩点
题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢"是可以传递的--如果A喜 欢B,B喜 ...
- bzoj1051: [HAOI2006]受欢迎的牛
tarjan缩点.判断是否只有一个没有出边.是则输出该点点数 #include<cstdio> #include<cstring> #include<iostream&g ...
- bzoj1051: [HAOI2006]受欢迎的牛(tarjan强连通分量)
强连通缩下点,出度为0有多个答案为0,否则答案为出度为0的强连通分量中点的个数. 发现一道tarjan模板题,顺便复习一波tarjan #include<iostream> #includ ...
- BZOJ1051|HAOI2006受欢迎的牛|强连通分量
Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认 ...
- BZOJ1051 HAOI2006受欢迎的牛
请原谅我,这题实在和bzoj1093太像 了,copy过来改一改,很多没有用,然后一起嘿嘿嘿~ #include<iostream> #include<cstdio> #inc ...
- 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)
P2341 [HAOI2006]受欢迎的牛|[模板]强连通分量 https://www.luogu.org/problem/P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就 ...
- 【强连通】P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G
P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G 判断强连通的关键是dfn与low. dfn记录的是节点dfs搜索时的dfs序,而low则是记录表示这个点以及其子孙节点连的 ...
- 洛谷——P2341 [HAOI2006]受欢迎的牛//POJ2186:Popular Cows
P2341 [HAOI2006]受欢迎的牛/POJ2186:Popular Cows 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所 ...
- BZOJ 1051: [HAOI2006]受欢迎的牛
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 7120 Solved: 3779 [Submit][S ...
最新文章
- 5g与edge ai_使用OpenVINO部署AI Edge应用
- .net 识别一维码_天若OCR文字识别 v5.0 原创好用的OCR及翻译小工具
- Pytorch1.7.1与SimpleITK2.0.0在centos7上终端运行冲突的情况
- 网站前后端交互学习有感
- laravel5.4中验证与错误提示设置
- 20+个很棒的Android开源项目
- vs新建一个excelpackage时间太长_炖牛肉vs煎牛肉,前者几小时后者几分钟,大厨告诉了我原因...
- 区块链 以太坊 solidity 事务控制和异常处理 require assert
- 《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第6章 数据服务
- pip install pyodbc : ERROR: Command errored out with exit status 1
- 四川轻化工大学计算机网络技术分数线,四川轻化工大学录取投档线
- Pytorch iter问题
- MapReduce中各个阶段的分析(转自道法—自然老师)
- Dynamic 365 子网格编辑控制列可编辑
- cf Gym 101086M ACPC Headquarters : AASTMT (Stairway to Heaven)
- 搜狗输入法 linux 17.04,Ubuntu17.04 安装搜狗中文输入法的方法
- avformat_open_input返回-1094995529 “Invalid data found when processing input“
- 大型多人在线游戏服务器架构设计 - RPC封装原理
- 网页使用的WindowMediaPlayer插件的问题22D6F312-B0F6-11D0-94AB-0080C74C7E95
- 卷积神经网络概念及使用 PyTorch 简单实现
热门文章
- synchronized不能锁静态变量_多线程编程不可错过——彻底理解synchronized
- python get score gain_什么是“熵和信息增益”?(What is “entropy and information gain”?)...
- 为啥led灯用一年后暗了很多_嫌原车的卤素“蜡烛灯”太暗,想换掉,该选氙气灯还是LED灯?...
- 学院后勤报修系统php_2020年西航后勤管理服务技能培训
- 国货美瞳相继完成资本融资,网络推广下美瞳是否能成为下一个国货爆品?
- java初始化集合_Java 中初始化 List 集合的 6 种方式!
- hashmap允许null键和值吗_hashMap底层源码浅析
- 安装python38_debian8安装python3.7
- docker 删除所有未启动的容器_Docker 镜像容器常用操作(让我们用 docker 溜得飞起)...
- 通过apt自动生成建造者模式单线程版代码(二)