bzoj1051 [HAOI2006]受欢迎的牛 tarjan缩点
题目描述
每头奶牛都梦想成为牛棚里的明星。被所有奶牛喜欢的奶牛就是一头明星奶牛。所有奶
牛都是自恋狂,每头奶牛总是喜欢自己的。奶牛之间的“喜欢”是可以传递的——如果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缩点相关推荐
- BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点
欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1051 题意概括 有n只牛,有m个羡慕关系. 羡慕关系具有传递性. 如果A羡慕B,B羡慕C,那么我们 ...
- bzoj1051: [HAOI2006]受欢迎的牛
tarjan缩点.判断是否只有一个没有出边.是则输出该点点数 #include<cstdio> #include<cstring> #include<iostream&g ...
- BZOJ1051|HAOI2006受欢迎的牛|强连通分量
Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认 ...
- bzoj1051: [HAOI2006]受欢迎的牛(tarjan强连通分量)
强连通缩下点,出度为0有多个答案为0,否则答案为出度为0的强连通分量中点的个数. 发现一道tarjan模板题,顺便复习一波tarjan #include<iostream> #includ ...
- BZOJ1051 HAOI2006受欢迎的牛
请原谅我,这题实在和bzoj1093太像 了,copy过来改一改,很多没有用,然后一起嘿嘿嘿~ #include<iostream> #include<cstdio> #inc ...
- 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)
P2341 [HAOI2006]受欢迎的牛|[模板]强连通分量 https://www.luogu.org/problem/P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就 ...
- 洛谷——P2341 [HAOI2006]受欢迎的牛//POJ2186:Popular Cows
P2341 [HAOI2006]受欢迎的牛/POJ2186:Popular Cows 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所 ...
- BZOJ 1051: [HAOI2006]受欢迎的牛【Trajan】
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛 ...
- BZOJ 1051: [HAOI2006]受欢迎的牛
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 7120 Solved: 3779 [Submit][S ...
最新文章
- vscode配置记录
- Worktile旗下智能化研发管理工具PingCode 宣布25人以下免费
- 阿里90后工程师利用ARM硬件特性开启安卓8终端“上帝模式” 1
- 42佳优秀的 Photoshop 按钮制作教程
- 使Docker搭建Java Web运行环境
- 拼多多联合五菱宏光等推出“买车包油”活动 规定时间下单可获首年油费补贴...
- devc中文注释显示问号_Python零基础入门-(如何让人读懂你的代码)文档注释
- 【C/C++】变量的内存分配
- 分析频域滤波和空域滤波的各自特点_同态滤波原理及其matlab实现
- mysql 窗口函数_7、MySQL高级功能(窗口函数)
- 我的世界光影Java优化_我的世界7款超级棒的光影包推荐 让你的世界从此变得真实无比...
- 企业内部网络的多出口相互冗余备份与负载均衡
- 新面貌,新征程—读《新程序员》有感
- 不要说珍重,不要说再见,就这样,默默地离开。在炎炎的夏季,也正是因为有了思念,才有了久别重逢的欢畅
- WebView打开第三方APP
- ps 动画gif制作
- 基于STM32的高精度温度测控系统-原理图设计
- SMTP命令与ESMTP命令简介(附带命令通信)
- idea恢复误删文件
- 『每周译Go』Go sync map 的内部实现