题目描述

每头奶牛都梦想成为牛棚里的明星。被所有奶牛喜欢的奶牛就是一头明星奶牛。所有奶

牛都是自恋狂,每头奶牛总是喜欢自己的。奶牛之间的“喜欢”是可以传递的——如果A喜

欢B,B喜欢C,那么A也喜欢C。牛栏里共有N 头奶牛,给定一些奶牛之间的爱慕关系,请你

算出有多少头奶牛可以当明星。

输入格式:

第一行:两个用空格分开的整数:N和M

第二行到第M + 1行:每行两个用空格分开的整数:A和B,表示A喜欢B

输出格式:

第一行:单独一个整数,表示明星奶牛的数量

tarjan缩点以后重新建图,如果只有一个点没有出边,那么输出这个强联通分量的大小,否则就没有明星牛。

注意 tarjan缩点时记录每条边连着两点的数组应该开的和变数一样大,我开小就wa了一个点。。。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,m,cnt,head[10005],x[100005],y[100005];
int dfn[10005],low[10005],vis[10005],hav[10005],bel[10005],q[10005];
struct edge{int next,to;
}e[100005];
void insert(int u,int v){cnt++;e[cnt].next=head[u];e[cnt].to=v;head[u]=cnt;
}
int top,ind,k;
void tarjan(int x){q[++top]=x;dfn[x]=low[x]=++ind;vis[x]=1;for(int i=head[x];i;i=e[i].next){int s=e[i].to;if(!dfn[s]){tarjan(s);low[x]=min(low[s],low[x]);}else if(vis[s]){low[x]=min(dfn[s],low[x]);}}int now=0;if(dfn[x]==low[x]){k++;while(now!=x){now=q[top];top--;vis[now]=0;bel[now]=k;hav[k]++;}}
}
int ans;
void work(){for(int i=1;i<=k;i++){if(!head[i]){if(ans){ans=0;return ;}else ans=hav[i];}}
}
int mx=0;
int main(){scanf("%d%d",&n,&m);int u,v,t;for(int i=1;i<=m;i++){scanf("%d%d",&x[i],&y[i]);insert(x[i],y[i]);}for(int i=1;i<=n;i++){if(!dfn[i])tarjan(i);}cnt=0;memset(head,0,sizeof head);memset(e,0,sizeof e);for(int i=1;i<=m;i++){if(bel[x[i]]!=bel[y[i]])insert(bel[x[i]],bel[y[i]]);} work();printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/Elfish/p/8038402.html

bzoj1051 [HAOI2006]受欢迎的牛 tarjan缩点相关推荐

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

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

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

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

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

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

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

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

  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 [HAOI2006]受欢迎的牛//POJ2186:Popular Cows

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

  8. BZOJ 1051: [HAOI2006]受欢迎的牛【Trajan】

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛 ...

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

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

最新文章

  1. vscode配置记录
  2. Worktile旗下智能化研发管理工具PingCode 宣布25人以下免费
  3. 阿里90后工程师利用ARM硬件特性开启安卓8终端“上帝模式” 1
  4. 42佳优秀的 Photoshop 按钮制作教程
  5. 使Docker搭建Java Web运行环境
  6. 拼多多联合五菱宏光等推出“买车包油”活动 规定时间下单可获首年油费补贴...
  7. devc中文注释显示问号_Python零基础入门-(如何让人读懂你的代码)文档注释
  8. 【C/C++】变量的内存分配
  9. 分析频域滤波和空域滤波的各自特点_同态滤波原理及其matlab实现
  10. mysql 窗口函数_7、MySQL高级功能(窗口函数)
  11. 我的世界光影Java优化_我的世界7款超级棒的光影包推荐 让你的世界从此变得真实无比...
  12. 企业内部网络的多出口相互冗余备份与负载均衡
  13. 新面貌,新征程—读《新程序员》有感
  14. 不要说珍重,不要说再见,就这样,默默地离开。在炎炎的夏季,也正是因为有了思念,才有了久别重逢的欢畅
  15. WebView打开第三方APP
  16. ps 动画gif制作
  17. 基于STM32的高精度温度测控系统-原理图设计
  18. SMTP命令与ESMTP命令简介(附带命令通信)
  19. idea恢复误删文件
  20. 『每周译Go』Go sync map 的内部实现

热门文章

  1. easyui框架前后端交互_Easyui Datagrid增删改及后台交互(java)
  2. java面试题十四 基本类型的默认值
  3. excel如何在双引号里面引用变量
  4. Hibernate 注解配置
  5. 有两个不同list,需要对比两个list内容且输出差异的内容
  6. 在reader中勾选pdf复选框_Adobe Acrobat和Reader PDF文件处理缓冲区溢出漏洞
  7. div 隐藏_CSS实现六边形Div图片展示效果
  8. 读WAF与IPS的区别总结之摘抄
  9. hadoop日常运维
  10. 关于LayoutParams