欢迎访问~原文出处——博客园-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 强连通缩点相关推荐

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

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

  2. bzoj1051: [HAOI2006]受欢迎的牛

    tarjan缩点.判断是否只有一个没有出边.是则输出该点点数 #include<cstdio> #include<cstring> #include<iostream&g ...

  3. bzoj1051: [HAOI2006]受欢迎的牛(tarjan强连通分量)

    强连通缩下点,出度为0有多个答案为0,否则答案为出度为0的强连通分量中点的个数. 发现一道tarjan模板题,顺便复习一波tarjan #include<iostream> #includ ...

  4. BZOJ1051|HAOI2006受欢迎的牛|强连通分量

    Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认 ...

  5. BZOJ1051 HAOI2006受欢迎的牛

    请原谅我,这题实在和bzoj1093太像 了,copy过来改一改,很多没有用,然后一起嘿嘿嘿~ #include<iostream> #include<cstdio> #inc ...

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

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

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

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

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

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

  9. BZOJ 1051: [HAOI2006]受欢迎的牛

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 7120  Solved: 3779 [Submit][S ...

最新文章

  1. 5g与edge ai_使用OpenVINO部署AI Edge应用
  2. .net 识别一维码_天若OCR文字识别 v5.0 原创好用的OCR及翻译小工具
  3. Pytorch1.7.1与SimpleITK2.0.0在centos7上终端运行冲突的情况
  4. 网站前后端交互学习有感
  5. laravel5.4中验证与错误提示设置
  6. 20+个很棒的Android开源项目
  7. vs新建一个excelpackage时间太长_炖牛肉vs煎牛肉,前者几小时后者几分钟,大厨告诉了我原因...
  8. 区块链 以太坊 solidity 事务控制和异常处理 require assert
  9. 《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第6章 数据服务
  10. pip install pyodbc : ERROR: Command errored out with exit status 1
  11. 四川轻化工大学计算机网络技术分数线,四川轻化工大学录取投档线
  12. Pytorch iter问题
  13. MapReduce中各个阶段的分析(转自道法—自然老师)
  14. Dynamic 365 子网格编辑控制列可编辑
  15. cf Gym 101086M ACPC Headquarters : AASTMT (Stairway to Heaven)
  16. 搜狗输入法 linux 17.04,Ubuntu17.04 安装搜狗中文输入法的方法
  17. avformat_open_input返回-1094995529 “Invalid data found when processing input“
  18. 大型多人在线游戏服务器架构设计 - RPC封装原理
  19. 网页使用的WindowMediaPlayer插件的问题22D6F312-B0F6-11D0-94AB-0080C74C7E95
  20. 卷积神经网络概念及使用 PyTorch 简单实现

热门文章

  1. synchronized不能锁静态变量_多线程编程不可错过——彻底理解synchronized
  2. python get score gain_什么是“熵和信息增益”?(What is “entropy and information gain”?)...
  3. 为啥led灯用一年后暗了很多_嫌原车的卤素“蜡烛灯”太暗,想换掉,该选氙气灯还是LED灯?...
  4. 学院后勤报修系统php_2020年西航后勤管理服务技能培训
  5. 国货美瞳相继完成资本融资,网络推广下美瞳是否能成为下一个国货爆品?
  6. java初始化集合_Java 中初始化 List 集合的 6 种方式!
  7. hashmap允许null键和值吗_hashMap底层源码浅析
  8. 安装python38_debian8安装python3.7
  9. docker 删除所有未启动的容器_Docker 镜像容器常用操作(让我们用 docker 溜得飞起)...
  10. 通过apt自动生成建造者模式单线程版代码(二)