bzoj1051: [HAOI2006]受欢迎的牛
tarjan缩点。判断是否只有一个没有出边。是则输出该点点数
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
#define clr(x,c) memset(x,c,sizeof(x))
#define REP(i,s,t) for(int i=s;i<=t;i++)
#define op() clr(head,0);pt=edges;
#define qwq(x) for(edge *o=head[x];o;o=o->next)
int read(){int x=0;char c=getchar();bool f=true;while(!isdigit(c)){if(c=='-') f=false;c=getchar();}while(isdigit(c)) x=x*10+c-'0',c=getchar();return f?x:-x;
}
const int nmax=10005;
const int maxn=50005;
const int inf=0x7f7f7f7f;
struct edge{int to;edge *next;
};
edge edges[maxn],*pt,*head[nmax];
int pre[nmax],sccno[nmax],out[nmax],scc_cnt,dfs_clock;
stack<int>s;
void adde(int u,int v){pt->to=v;pt->next=head[u];head[u]=pt++;
}
int dfs(int x){int lowu=pre[x]=++dfs_clock;s.push(x);qwq(x) {int to=o->to;if(!pre[to]) lowu=min(lowu,dfs(to));else if(!sccno[to]) lowu=min(lowu,pre[to]);}if(lowu==pre[x]){scc_cnt++;while(1){int X=s.top();s.pop();sccno[X]=scc_cnt;if(x==X) break;}}return lowu;
}
void init(){op();clr(out,false);clr(pre,0);clr(sccno,0);dfs_clock=scc_cnt=0;
}
int main(){init();int n=read(),m=read(),u,v,ans=0,cur,cnt=0;rep(i,m) u=read(),v=read(),adde(u,v);rep(i,n) if(!pre[i]) dfs(i);rep(i,n) qwq(i) if(sccno[i]!=sccno[o->to]) out[sccno[i]]=true;rep(i,scc_cnt) if(!out[i]) cnt++,cur=i;if(cnt==1) rep(i,n) if(sccno[i]==cur) ans++;printf("%d\n",ans);
}
1051: [HAOI2006]受欢迎的牛
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 4144 Solved: 2219
[Submit][Status][Discuss]
Description
Input
Output
一个数,即有多少头牛被所有的牛认为是受欢迎的。
Sample Input
1 2
2 1
2 3
Sample Output
HINT
Source
[Submit][Status][Discuss]
转载于:https://www.cnblogs.com/fighting-to-the-end/p/5672879.html
bzoj1051: [HAOI2006]受欢迎的牛相关推荐
- BZOJ1051|HAOI2006受欢迎的牛|强连通分量
Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认 ...
- BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点
欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1051 题意概括 有n只牛,有m个羡慕关系. 羡慕关系具有传递性. 如果A羡慕B,B羡慕C,那么我们 ...
- bzoj1051 [HAOI2006]受欢迎的牛 tarjan缩点
题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢"是可以传递的--如果A喜 欢B,B喜 ...
- bzoj1051: [HAOI2006]受欢迎的牛(tarjan强连通分量)
强连通缩下点,出度为0有多个答案为0,否则答案为出度为0的强连通分量中点的个数. 发现一道tarjan模板题,顺便复习一波tarjan #include<iostream> #includ ...
- BZOJ1051 HAOI2006受欢迎的牛
请原谅我,这题实在和bzoj1093太像 了,copy过来改一改,很多没有用,然后一起嘿嘿嘿~ #include<iostream> #include<cstdio> #inc ...
- 洛谷——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 ...
- 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)
P2341 [HAOI2006]受欢迎的牛|[模板]强连通分量 https://www.luogu.org/problem/P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就 ...
- BZOJ 1051: [HAOI2006]受欢迎的牛【Trajan】
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛 ...
最新文章
- 转:mybatis - 分页功能
- 重庆市推进组建区块链数字资产交易所
- Java反射最佳实践
- DICOM:符号和缩写
- mac安装完mysql后关机特别慢_解决Mac升级到10.12后关机很慢的问题
- php 点对点,浅析点对点(End-to-End)的场景文字识别
- 使用JS实现文字搬运工
- LeetCode——面试题 08.01. 三步问题
- jQuery实现多个MP3音频播放
- NUC1177 排序【排序】
- zul使用java_zk中zul页面中组件的id和java类中的变量绑定实现
- 直播特效的实现原理与难点
- java knn kd树_KD树实现KNN
- hdu_5145_NPY and girls(莫队算法+组合)
- 基于Docker搭建RabbitMQ集群(多台服务器)
- Windows XP更新后出现“你可能是盗版软件受害者”解决方法
- 点是否在三角形内——C++实现
- html设置幼圆字体,CSS font-family中文字体设置方法
- 2019-2020年度第2学期课程回顾总结
- 安装SqlServer 2008 R2时出现程序兼容性问题
热门文章
- 安装python3.7.0的步骤_CentOS7下简单安装python3.7.0步骤
- 计算机组成原理第二版复习大纲,计算机组成原理复习大纲
- docker 添加端口映射_Docker快速搭建PHP开发环境详细教程
- python学习-注释、语法、整数、浮点数初步接触
- 大数据面试题及答案 汇总版
- mysql 表 地图_报表中的地图怎么做?
- python计算每月工资多少钱_[Python]CCF——工资计算(201612-2)
- inavFilter 惯导融合算法
- c语言中赋予从2开始的偶数,2013年计算机二级C语言上机试题三十二及答案
- jenkins测试c语言接口,Jenkins集成接口测试实践(一)