1051. [HAOI2006]受欢迎的牛【强连通分量】
Description
Input
Output
一个数,即有多少头牛被所有的牛认为是受欢迎的。
Sample Input
1 2
2 1
2 3
Sample Output
HINT
100%的数据N<=10000,M<=50000
求有多少个点,使得所有其他点都有一条到它的路径。
嘛……很好的一个tarjan模板题……问题是垃圾LXXGU的数据太恶心
竟然有多个图的数据(强行给自己的菜开脱)
这个题就是将图缩点缩成一个有向无环图
若只有一个点出度为0那么这个点必然被所有牛喜欢
反证:要是有多个点出度为0,那么这些出度为0的点必然不会喜欢其他出度为0的点
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define MAXN (100000+5)
#define MAXM (100000+5)
using namespace std;
int Dfn[MAXN],Low[MAXN],Outd[MAXN];
int Dfs_num,Col_num,Color[MAXN],Cnt[MAXN];
int u[MAXM],v[MAXM];
int stack[MAXN],top;
bool Vis[MAXN];
int head[MAXN],num_edge;
struct node
{
int next;
int to;
} edge[MAXM*]; void add(int u,int v)
{
edge[++num_edge].to=v;
edge[num_edge].next=head[u];
head[u]=num_edge;
} void Tarjan(int x)
{
Dfn[x]=++Dfs_num;
Low[x]=Dfs_num;
Vis[x]=true;
stack[++top]=x;
for (int i=head[x]; i!=; i=edge[i].next)
if (!Dfn[edge[i].to])
{
Tarjan(edge[i].to);
Low[x]=min(Low[x],Low[edge[i].to]);
}
else if (Vis[edge[i].to])
Low[x]=min(Low[x],Dfn[edge[i].to]);
if (Dfn[x]==Low[x])
{
Vis[x]=false;
Color[x]=++Col_num;
Cnt[Col_num]++;
while (stack[top]!=x)
{
Cnt[Col_num]++;
Color[stack[top]]=Col_num;
Vis[stack[top--]]=false;
}
--top;
}
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for (int i=; i<=m; ++i)
{
scanf("%d%d",&u[i],&v[i]);
add(u[i],v[i]);
}
for (int i=; i<=n; ++i)
if (!Dfn[i])
Tarjan(i);
for (int i=; i<=m; ++i)
if (Color[u[i]]!=Color[v[i]])
++Outd[Color[u[i]]]; int Ans=;
for (int i=; i<=Col_num; ++i)
if (Outd[i]==)
if (Ans==)
Ans=Cnt[i];
else
{
printf("");
return ;
}
printf("%d",Ans);
}
1051. [HAOI2006]受欢迎的牛【强连通分量】的更多相关文章
- BZOJ 1051: [HAOI2006]受欢迎的牛 强连通缩点
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1051 题解: 强连通缩点得到DAG图,将图转置一下,对入度为零的点跑dfs看看能不能访问 ...
- [bzoj1051][HAOI2006]受欢迎的牛——强连通分量
题目大意: 给定一个有向图,求能够被其他所有点访问到的点的个数. 题解: 首先,这个题我在洛谷上AC了,但是bzoj上WA,不知道为什么. 说一下解法. 首先,我们进行scc分解,可以知道, 如果一个 ...
- BZOJ 1051: [HAOI2006]受欢迎的牛( tarjan )
tarjan缩点后, 有且仅有一个出度为0的强连通分量即answer, 否则无解 ----------------------------------------------------------- ...
- BZOJ 1051: [HAOI2006]受欢迎的牛(SCC)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 8172 Solved: 4470[Submit][Sta ...
- 1051: [HAOI2006]受欢迎的牛
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2276 Solved: 1190[Submit][Sta ...
- 【BZOJ 1051】 1051: [HAOI2006]受欢迎的牛 (SCC)
1051: [HAOI2006]受欢迎的牛 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如 ...
- BZOJ 1051: [HAOI2006]受欢迎的牛 缩点
1051: [HAOI2006]受欢迎的牛 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- bzoj 1051: [HAOI2006]受欢迎的牛 tarjan缩点
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2092 Solved: 1096[Submit][Sta ...
- BZOJ(3) 1051: [HAOI2006]受欢迎的牛
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 7365 Solved: 3937[Submit][Sta ...
- 【BZOJ】1051: [HAOI2006]受欢迎的牛
[HAOI2006]受欢迎的牛 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢 ...
随机推荐
- iOS 交互h5 - WKWebView
众所周知,UIWebView存在内存问题,也就是当加载一个UIWebView时,内存会一直上升趋势无法得到释放.这样在使用UIWebView进行h5交互开发时会有很大的问题. 因而苹果增加了一个新的类 ...
- 《码出高效 Java开发手册》第四章 走进JVM(未整理)
码云地址: https://gitee.com/forxiaoming/JavaBaseCode/tree/master/EasyCoding
- 微信小程序--分享界面自定义图片
一般小程序页面都会大于等于1页,每个页面右上角都会有分享功能,建议把以下方法封装到app.js文件,在页面直接调用该方法,避免重复代码,提高性能.(代码用到ES6语法,若不支持,请自行还原js) // ...
- JS 自定义对象 属性
js自定义对象 一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在J ...
- Drupal8入门文章推荐
1.<drupal 8 入门 > 2.<初探drupal8>
- 当div元素内的内容超出其宽度时,自动隐藏超出的内容
word-break:keep-all;/* 不换行 */ white-space:nowrap;/* 不换行 */ overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */ te ...
- python的学习笔记之——time模块常用内置函数
1.Python time time()方法 Python time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数). time()方法语法: time.time() 举例: #! ...
- 跨域调用报表展现页面的flash打印方法
环境说明: 项目的应用和润乾的报表应用分别部署在同一机器不同的web服务器上(IP相同,端口不同,项目的端口8080,报表应用的端口是6868). 在项目中的父页面通过iframe调用报表展现页 ...
- justreq测试接口配置服务
特性 自动缓存每一次接口请求,当测试服务器宕机时,依然可以从容开发 接口替身服务,当后台GG们还没开发好接口时,可以用json.txt等替代 独有jrs脚本,仿php,可以定制更灵活的接口替身,甚至可 ...
- Django之自定义权限
官方解释 Custom permissions¶ To create custom permissions for a given model object, use the permissions ...