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

每一头牛的愿望就是变成一头最受欢迎的牛。现在有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

Source

[Submit][Status][Discuss]

转载于:https://www.cnblogs.com/fighting-to-the-end/p/5672879.html

bzoj1051: [HAOI2006]受欢迎的牛相关推荐

  1. BZOJ1051|HAOI2006受欢迎的牛|强连通分量

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

  2. BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1051 题意概括 有n只牛,有m个羡慕关系. 羡慕关系具有传递性. 如果A羡慕B,B羡慕C,那么我们 ...

  3. bzoj1051 [HAOI2006]受欢迎的牛 tarjan缩点

    题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢"是可以传递的--如果A喜 欢B,B喜 ...

  4. bzoj1051: [HAOI2006]受欢迎的牛(tarjan强连通分量)

    强连通缩下点,出度为0有多个答案为0,否则答案为出度为0的强连通分量中点的个数. 发现一道tarjan模板题,顺便复习一波tarjan #include<iostream> #includ ...

  5. BZOJ1051 HAOI2006受欢迎的牛

    请原谅我,这题实在和bzoj1093太像 了,copy过来改一改,很多没有用,然后一起嘿嘿嘿~ #include<iostream> #include<cstdio> #inc ...

  6. 洛谷——P2341 [HAOI2006]受欢迎的牛//POJ2186:Popular Cows

    P2341 [HAOI2006]受欢迎的牛/POJ2186:Popular Cows 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所 ...

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

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

  8. 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)

    P2341 [HAOI2006]受欢迎的牛|[模板]强连通分量 https://www.luogu.org/problem/P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就 ...

  9. BZOJ 1051: [HAOI2006]受欢迎的牛【Trajan】

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛 ...

最新文章

  1. 转:mybatis - 分页功能
  2. 重庆市推进组建区块链数字资产交易所
  3. Java反射最佳实践
  4. DICOM:符号和缩写
  5. mac安装完mysql后关机特别慢_解决Mac升级到10.12后关机很慢的问题
  6. php 点对点,浅析点对点(End-to-End)的场景文字识别
  7. 使用JS实现文字搬运工
  8. LeetCode——面试题 08.01. 三步问题
  9. jQuery实现多个MP3音频播放
  10. NUC1177 排序【排序】
  11. zul使用java_zk中zul页面中组件的id和java类中的变量绑定实现
  12. 直播特效的实现原理与难点
  13. java knn kd树_KD树实现KNN
  14. hdu_5145_NPY and girls(莫队算法+组合)
  15. 基于Docker搭建RabbitMQ集群(多台服务器)
  16. Windows XP更新后出现“你可能是盗版软件受害者”解决方法
  17. 点是否在三角形内——C++实现
  18. html设置幼圆字体,CSS font-family中文字体设置方法
  19. 2019-2020年度第2学期课程回顾总结
  20. 安装SqlServer 2008 R2时出现程序兼容性问题

热门文章

  1. 安装python3.7.0的步骤_CentOS7下简单安装python3.7.0步骤
  2. 计算机组成原理第二版复习大纲,计算机组成原理复习大纲
  3. docker 添加端口映射_Docker快速搭建PHP开发环境详细教程
  4. python学习-注释、语法、整数、浮点数初步接触
  5. 大数据面试题及答案 汇总版
  6. mysql 表 地图_报表中的地图怎么做?
  7. python计算每月工资多少钱_[Python]CCF——工资计算(201612-2)
  8. inavFilter 惯导融合算法
  9. c语言中赋予从2开始的偶数,2013年计算机二级C语言上机试题三十二及答案
  10. jenkins测试c语言接口,Jenkins集成接口测试实践(一)