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. IE6中position:fixed无效问题解决

    在做页面右下脚对话框时,直接使用position:fixed;大部分浏览器很容易就能做到,但是在IE6中却发现不行,原来是IE6不支持position:fixed;这个属性. 虽然用JS肯定能解决这个 ...

  2. 前台JS(Jquery)调用后台方法 无刷新级联菜单示例

    前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例 下面是做的一个前台用JQUERY,AJAX调用后台方法做的无刷新级联菜单 http://www.dtan.so CasMenu.aspx页 ...

  3. OpenStack 控制台不能不能访问的问题

    经过一个多月断断续续的OpenStack部署,今天终于搞定基本的云环境部署,linux.Windows虚拟机都可以正常运行!虽然期间遇到了N多的坑,在自己不断学习,不断找E文的过程中都逐一被我攻破,但 ...

  4. php面向对象的基础

    这是第一次写博客,希望大家多多支持! 一.OOP概念 1.类(class) 它包括名称.方法.属性和事件.实际是它本身不是对象,因为它不存在内存中.当引用类的代码运行时,类的一个新的实例,及对象,就在 ...

  5. WCF之安全

    传输安全. 点对点,对整个消息进行加密,性能损失,当中间者不安全时,消息也就不安全了. WCF中支持传输安全和消息安全模式. 通过配置和绑定来设置.<Security Mode =Transct ...

  6. hdu 2057 A+B Again

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2057 题目分析:涉及到16进制内的加法,可以用%I64x直接来处理,要注意到16进制中负数是用补码来表 ...

  7. flume+kafka (分区实现 默认单分区)

    这篇文章主要是log4j+flume+kafka的内容 首先从从下面的地址下载flume+kafka的插件包 https://github.com/beyondj2ee/flumeng-kafka-p ...

  8. python中文json串创建与解析

    下面代码,举例说明了json如何创建和解析含有中文的json串: #coding=gbk import os import sys reload(sys) sys.setdefaultencoding ...

  9. 利用PowerDesigner绘制PDM生成SQL Server数据库

    PowerDesigner是个很强大的建模工具,可以利用它绘制各种图形,本文利用该工具绘制PDM,进而生成SQL Server数据库. 比如绘制一个简单的学生选课.教师授课管理系统的PDM: pk表示 ...

  10. phpStudy 2016 更新下载,新版支持php7.0

    目标:让天下没有难配的php环境. phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Tengine/Lighttpd/IIS7/8/6 『软件简介』该程序包集成 ...