1051: [HAOI2006]受欢迎的牛

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 3134  Solved: 1642
[Submit][Status][Discuss]

Description

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

Input

第一行两个数N,M。 接下来M行,每行两个数A,B,意思是A认为B是受欢迎的(给出的信息有可能重复,即有可能出现多个A,B)

Output

一个数,即有多少头牛被所有的牛认为是受欢迎的。

Sample Input

3 3
1 2
2 1
2 3

Sample Output

1

HINT

100%的数据N<=10000,M<=50000

  很久之前做过的一道题目。。
  具体就是先tarjan缩点,点的权值就是这个连通分量的点的数量
  然后找入度为0的点
  只有一个就输出它的权值
  多个就输0
 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath> #define maxn 10001 using namespace std; inline int In()
{
int x=;char ch=getchar();
while(ch<''||ch>'')ch=getchar();
while(ch>=''&&ch<='')x=x*+ch-'',ch=getchar();
return x;
} struct ed{
int u,v;
}edge[maxn*]; struct node{
int to,last;
}e[maxn*]; int last[maxn],tot=,dfn[maxn],low[maxn],father[maxn],sta[maxn],top=,cnt=,size=,num[maxn],in[maxn]; bool ins[maxn]; void add(int u,int v){e[++tot].to=v,e[tot].last=last[u],last[u]=tot;} void tarjan(int poi)
{
dfn[poi]=low[poi]=++cnt;
ins[poi]=;sta[++top]=poi;
for(int i=last[poi];i;i=e[i].last)
{
int u=e[i].to;
if(!dfn[u])
{
tarjan(u);
low[poi]=min(low[u],low[poi]);
}
else if(ins[u]) low[poi]=min(low[poi],dfn[u]);
}
if(dfn[poi]==low[poi])
{
size++;
int vv;
do{
vv=sta[top];
father[vv]=size;
ins[vv]=;
num[size]++;
top--;
}while(vv!=poi);
}
} int main()
{
freopen("1051.in","r",stdin);
int n,m,str=;
n=In(),m=In();
for(int i=;i<=n;i++)father[i]=i;
for(int i=;i<=m;i++)
edge[i].u=In(),edge[i].v=In(),add(edge[i].u,edge[i].v);
for(int i=;i<=n;i++)if(!dfn[i])tarjan(i);
memset(last,,sizeof(last));
tot=;
for(int i=;i<=m;i++)if(father[edge[i].u]!=father[edge[i].v]){
in[father[edge[i].u]]++;
}
for(int i=;i<=size;i++)
{
if(!in[i]&&str){printf("");return ;}
if(!in[i])str=i;
}
printf("%d",num[str]);
return ;
}

【tarjan】BZOJ 1051:受欢迎的牛的更多相关文章

  1. BZOJ 1051 受欢迎的牛(Tarjan缩点)

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

  2. BZOJ 1051 受欢迎的牛

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

  3. BZOJ 1051 受欢迎的牛 缩点

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1051 题目大意: 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数( ...

  4. bzoj 1051 受欢迎的牛-tarjan

    https://www.lydsy.com/JudgeOnline/problem.php?id=1051 如果A喜欢B,那么A->B连边,那么整个图储存下来,如果有好多个牛是受欢迎的,那么他们 ...

  5. 【BZOJ】1051: [HAOI2006]受欢迎的牛(tarjan)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1051 这题还好-1A了..但是前提还是看了题解的 囧.....一开始认为是并查集,oh,不行,,无法 ...

  6. bzoj 1051: [HAOI2006]受欢迎的牛 tarjan缩点

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2092  Solved: 1096[Submit][Sta ...

  7. BZOJ 1051: [HAOI2006]受欢迎的牛( tarjan )

    tarjan缩点后, 有且仅有一个出度为0的强连通分量即answer, 否则无解 ----------------------------------------------------------- ...

  8. BZOJ 1051 最受欢迎的牛 解题报告

    题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4438  Solved: 2353[S ...

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

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 8172  Solved: 4470[Submit][Sta ...

随机推荐

  1. 【原创】Oracle函数中对于NO_DATA_FOUND异常处理的研究

    一直以来有一个困惑,一直没解决,昨天一哥们问我这个问题,决心弄清楚,终于得到了答案.先看下面这个函数: create or replace function fn_test(c_xm varchar) ...

  2. Photoshop CS6的安装

    Photoshop CS6的安装 文件的现在可以从百度软件中下载 安装方法见参考链接,window版的与之类似,亲测成功 参考链接 Mac版Adobe Photoshop CS6 破解过程 Adobe ...

  3. 获取一年时间的sql

    select a.day, to_char(a.day, 'day') as dd, 1 as flag,to_char(a.day,'YYYY-MM-DD') from ( SELECT TO_DA ...

  4. 【学习笔记】【C语言】关系运算符

    1. 条件判断 默认情况下,我们在程序中写的每一句正确代码都会被执行.但很多时候,我们想在某个条件成立的情况下才执行某一段代码 这种情况的话可以使用条件语句来完成,但是我们暂时不学习条件语句,先来看一 ...

  5. 大数求模 sicily 1020

        Search

  6. 《linux下sudo服务的使用》RHEL6

    /bin/ 下放的二进制文件命令都是普通用户可以使用的 Sbin 下放的二进制文件命令都是超级用户root可以使用的   普通用户也想使用Sbin下的文件可以通过sudo来实现: 默认普通用户是不可以 ...

  7. 《Apache负载均衡》RHEL6

    Apache负载均衡的搭建,基于上篇<CDN web加速代理>搭建好的服务器,我们来搭建apache负载均衡: Apahe负载均衡:就是为了缓解一台服务器的压力而多台服务器配合使用. 基于 ...

  8. 《LDAP服务器和客户端的加密认证》RHEL6——第二篇 运维工程师必考

    服务端的配置: (基于原先配好的ldap服务器)打开加密认证: Iptables –F  setenforce 0 1.编辑ldap的配置文件:slapd.conf 2.启动ldap服务器: 3.切换 ...

  9. gprof

    函数级耗时剖析.gprof不会说谎,仔细考虑下函数的实现细节. 准备工作 对单文件simulator.cpp编译 编译:g++ -g -pg simulator.cpp -o simulator.o ...

  10. 转 XMLHttpRequest().readyState的五种状态详解

    转 http://javathinker.blog.ccidnet.com/blog-htm-itemid-1262479-do-showone-type-blog-uid-36384.html 在& ...