本来分好组之后,就确定好了每个人要学什么,我去学数据结构啊。

因为前一段时间遇到一道题是用Lca写的,不会,就去学。

然后发现Lca分为在线算法和离线算法,在线算法有含RMQ的ST算法,前面的博客也写了。离线算法是基于DFS的Tarjan算法。

然后就打算去学一下Tarjan,因为以前也看过但是没看完,就打算学一下,因为Tarjan算法是图论的内容,然后就让图论选手教了我一下大环套小环的怎么推,然后就尴尬了。

我是学数据结构的,没有要去抢图论的内容学。。。

我也看了线段树了啊。

学完这个Tarjan我就溜。

气氛有些微妙。。。

好了,继续,反正脸皮厚,今天打电话习惯性被怼,打完电话整个人都不好了,我是垃圾哦,不好意思。

写题写题,无所谓了。

P2863 [USACO06JAN]牛的舞会The Cow Prom

https://www.luogu.org/problemnew/show/P2863

这个题就是问能不能成连通的,就是强连通分量啊,用Tarjan写,然后判断一下,如果强连通里面的数的个数大于等于2就可以了。问有几个是满足条件的。

Tarjan裸模板题。

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int maxn=5e4+;
struct node{
int v,next;
}edge[maxn];
int DFN[maxn],LOW[maxn];
int stack[maxn],heads[maxn],visit[maxn],cnt,tot,indexx,num;
void add(int x,int y){
edge[++cnt].next=heads[x];
edge[cnt].v=y;
heads[x]=cnt;
return ;
}
void tarjan(int x){
DFN[x]=LOW[x]=++tot;
stack[++indexx]=x;
visit[x]=;
for(int i=heads[x];i!=-;i=edge[i].next){
if(!DFN[edge[i].v]){
tarjan(edge[i].v);
LOW[x]=min(LOW[x],LOW[edge[i].v]);
}
else if(visit[edge[i].v]){
LOW[x]=min(LOW[x],DFN[edge[i].v]);
}
}
if(LOW[x]==DFN[x]){
int cnt=;
do{
cnt++;
//printf("%d ",stack[indexx]);
visit[stack[indexx]]=; //indexx是记录模拟栈的长度
indexx--;
}while(x!=stack[indexx+]);//出栈,并且输出。
//printf("\n");
if(cnt>=)num++; //cnt就是判断一下条件
}
return ;
}
int main(){
memset(heads,-,sizeof(heads));
int n,m;
ios;
cin>>n>>m;
int x,y;
for(int i=;i<=m;i++){
cin>>x>>y;
add(x,y);
}
num=;
for(int i=;i<=n;i++)
if(!DFN[i])tarjan(i);
cout<<num<<endl;
return ;
}

写完了,溜了。

洛谷 P2863 [USACO06JAN]牛的舞会The Cow Prom-强连通分量(Tarjan)的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 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 ...

随机推荐

  1. 【Akroma, Angel of Fury】完成svn环境搭建

    昨天的那篇博文恰恰是实验室所干的事儿 但是那是一种很投机取巧的方式完成的多project管理方式 来看看我建立环境的方法 首先,找一个比较闲的公用服务器(为什么不用自己的?有公共资源不用,你傻啊?), ...

  2. Python 性能分析工具简介

    Table of Contents 1. 性能分析和调优工具简介 1.1. Context Manager 1.2. Decorator 1.3. 系统自带的time命令 1.4. python ti ...

  3. cf965e Short Code

    ref #include <algorithm> #include <iostream> #include <cstring> #include <cstdi ...

  4. IOS开发学习笔记025-xib和storyboard

    stotyboard : 描述软件界面,大范围,比较适合整个软件的所有界面 xib文件的使用:描述软件界面,小范围,比较适合描述小界面 在xcode新建文件窗口可以看到两个文件,storyboard和 ...

  5. Python-S9——Day115-Flask Web框架

    01 当日内容概要 1 当日内容概要 1.1 Flask基础: 1.2 Web框架包含的基础组件: 1.2.1 路由.视图函数.模板渲染: 1.3 Flask配置文件: 1.4 Flask的路由系统: ...

  6. PHP 删除 url 中的 query string

    function removeQueryStringFromUrl($url) { if (substr($url,0,4) =="http") { $urlPartsArray ...

  7. python安装pattern失败

    做文本分类需要用到pattern.en进行词形还原,安装了一上午都没有成功,mysqlclient安装失败.最后解决办法,pip install --only-binary :all: mysqlcl ...

  8. springboot添加事务

    (转自:http://www.cnblogs.com/xingzc/p/6029483.html) 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合.由于数据 ...

  9. “取出数据表中第10条到第20条记录”的sql语句+selecttop用法

    1.首先,select top用法: 参考问题 select top n * from和select * from的区别 select * from table -- 取所有数据,返回无序集合 sel ...

  10. [SDOI2016][bzoj4514] 数字配对 [费用流]

    题面 传送门 思路 一个数字能且只能匹配一次 这引导我们思考:一次代表什么?代表用到一定上限(b数组)就不能再用,同时每用一次会产生价值(c数组) 上限?价值?网络流! 把一次匹配设为一点流量,那产生 ...