题目传送门

这个题还是个缩点的板子题......

答案就是size大于1的强连通分量的个数

加一个size来统计就好了

#include <iostream>
#include <cstdlib>
#include <cstdio> using namespace std; const int N=1e5+5;
const int M=5e5+5; struct edge{
int to,next;
}e[M]; int n,m,dfn[N],low[N],cnt,head[N];
int idx[N],s[N],top,tot,sum,siz[N];
bool ins[N];int ind[N],ans; inline void build(int u,int v){
e[++tot].next=head[u];
head[u]=tot;e[tot].to=v;
return ;
} inline void tarjan(int cur){
s[++top]=cur;ins[cur]=true;
dfn[cur]=low[cur]=++cnt;
for(int i=head[cur];i;i=e[i].next){
int k=e[i].to;
if(!dfn[k]){
tarjan(k);
low[cur]=min(low[cur],low[k]);
}else if(ins[k]) low[cur]=min(low[cur],dfn[k]);
}
if(low[cur]==dfn[cur]){
register int ss=0;
++sum;
while(s[top+1]!=cur){
++ss;
idx[s[top]]=sum;
ins[s[top--]]=false;
}
siz[sum]=ss;
}
return ;
} int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i){
register int u,v;
scanf("%d%d",&u,&v);
build(u,v);
}
for(int i=1;i<=n;++i) if(!dfn[i]) tarjan(i);
for(int i=1;i<=n;++i)
for(int j=head[i];j;j=e[j].next){
int k=e[j].to;
if(idx[i]!=idx[k]) ++ind[idx[k]];
}
for(int i=1;i<=sum;++i) if(!ind[i]&&siz[i]>1) ++ans;
printf("%d\n",ans);
return 0;
}

LuoGu P2863 [USACO06JAN]牛的舞会The Cow Prom的更多相关文章

  1. luogu P2863 [USACO06JAN]牛的舞会The Cow Prom |Tarjan

    题目描述 The N (2 <= N <= 10,000) cows are so excited: it's prom night! They are dressed in their ...

  2. 【luogu P2863 [USACO06JAN]牛的舞会The Cow Prom】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2863 求强连通分量大小>自己单个点的 #include <stack> #include ...

  3. bzoj1654 / P2863 [USACO06JAN]牛的舞会The Cow Prom

    P2863 [USACO06JAN]牛的舞会The Cow Prom 求点数$>1$的强连通分量数,裸的Tanjan模板. #include<iostream> #include&l ...

  4. P2863 [USACO06JAN]牛的舞会The Cow Prom

    洛谷——P2863 [USACO06JAN]牛的舞会The Cow Prom 题目描述 The N (2 <= N <= 10,000) cows are so excited: it's ...

  5. 洛谷——P2863 [USACO06JAN]牛的舞会The Cow Prom

    https://www.luogu.org/problem/show?pid=2863#sub 题目描述 The N (2 <= N <= 10,000) cows are so exci ...

  6. 洛谷 P2863 [USACO06JAN]牛的舞会The Cow Prom

    传送门 题目大意:形成一个环的牛可以跳舞,几个环连在一起是个小组,求几个小组. 题解:tarjian缩点后,求缩的点包含的原来的点数大于1的个数. 代码: #include<iostream&g ...

  7. 洛谷P2863 [USACO06JAN]牛的舞会The Cow Prom

    代码是粘的,庆幸我还能看懂. #include<iostream> #include<cstdio> #include<cmath> #include<alg ...

  8. 洛谷 P2863 [USACO06JAN]牛的舞会The Cow Prom 题解

    每日一题 day11 打卡 Analysis 好久没大Tarjan了,练习练习模板. 只要在Tarjan后扫一遍si数组看是否大于1就好了. #include<iostream> #inc ...

  9. 洛谷 P2863 [USACO06JAN]牛的舞会The Cow Prom(Tarjan)

    一道tarjan的模板水题 在这里还是着重解释一下tarjan的代码 #include<iostream> #include<cstdio> #include<algor ...

随机推荐

  1. 在window上使用 linux shell 删除文件夹递归地

    目的 在windows环境下, 整理代码,代码中含有 .svn 文件夹, 此文件夹在所有受控目录下都存在, 需要统一删除. 但是对windows的shell不熟悉,想用linux rm来删除, 如何实 ...

  2. [译]Use Dependency Injection In WebForms Application

    怎么在已用的WebForm应用中使用DI 假设有一个电影网站,有个页面会列出最近热门的电影.这个项目中使用了仓储模式来获取数据. public partial class Default : Syst ...

  3. 快速学习 javascript

    // js 6种数据类型:字符串.数值.布尔值.undefined.null.object // 三种非数字的数字类型:Infinity -Infinity NaN var str = "H ...

  4. Spring 快速开始 启动Spring

    [启动Spring必须配置] [web.xml部署描述符方式] 1.配置Servlet级别上下文 <servlet> <servlet-name>springDispatche ...

  5. 如何修改Jupyter Notebook的主题

    1.windows系统 (1)下载到本地(使用git bash命令行界面) git clone https://github.com/dunovank/jupyter-themes (2)Instal ...

  6. 利用PHP+MySql+Ajax操作实现年月日联动功能

    PHP+MySql+Ajax实现年月日的三级联动 <!DOCTYPE html><html>    <head>        <meta charset=& ...

  7. Object 中的wait和Thread中sleep的区别

    摘自 http://www.cnblogs.com/loren-Yang/p/7538482.html 一.区别 1.wait()来自于Object类而sleep来自于Thread类 2.sleep没 ...

  8. Linux修改MAC地址方法

    Linux修改MAC地址方法 - Linux modifies MAC address method ifconfig wlan0 down ifconfig wlan0 hw ether MAC地址 ...

  9. Chrome实用技巧集锦

    1. 截取整个网页内容: 步骤:(F12 或 Ctrl Shift I 进入开发者模式)  ——>  Ctrl Shift P 弹出输入框  ——>  输入框中输入:Captrue ful ...

  10. TensorFlow从入门到理解

    一.<莫烦Python>学习笔记: TensorFlow从入门到理解(一):搭建开发环境[基于Ubuntu18.04] TensorFlow从入门到理解(二):你的第一个神经网络 Tens ...