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

因为前一段时间遇到一道题是用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. North American Invitational Programming Contest (NAIPC) 2017

    (待补) A. Pieces of Parentheses 将括号处理完成后排序,方式参加下面的博客.然后做一遍背包即可. 2018 Multi-University Training Contest ...

  2. PAT basic 1087

    1087 有多少不同的值 (20 分) 当自然数 n 依次取 1.2.3.…….N 时,算式 ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少个不同的值?(注:⌊x⌋ 为取整函数,表示不超过 x 的最大自然 ...

  3. python数据排序

    1.原地排序 data.sort() #对原列表进行排序 2.复制排序 data2 = sorted(data) #原列表不变,作为参数传给sorted()方法进行排序

  4. 3 View - Response对象

    1. HttpResponse对象:返回数据 from django.http import HttpResponse 在django.http模块中定义了HttpResponse对象的API Htt ...

  5. hdu1950Bridging signals(求最长上升自序列nlogn算法)

    Bridging signals Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  6. TCP/IP网络编程之多种I/O函数

    send和recv函数 在之前的学习中,我们在不少示例中用到send和recv这两个函数,但一直没有详细解释过着两个函数中每个参数的含义.本节将介绍Linux平台下的send&recv函数 # ...

  7. 48、android代码架构总结

    之前是按功能模块进行分类,现在随着功能模块越来越多,代码层次不再清晰,所以修改了工程结构: 之前: 经过修改现在: 1.更严谨的遵循mvc架构 bean目录存放的是数据模型 ui存储的是activit ...

  8. CTF 两道web整数溢出题目(猫咪银行和ltshop)

    ①猫咪银行: (2018中科大hackgame) 一开始给十个CTB,而flag需要20个CTB,我们需要理财赚够20个. 理财是只能买入TDSU才可以获得收益.我们先上来直接把CTB全部换成TDSU ...

  9. android抓取logcat日志的方法

    这几天帮忙测试一个APP,报告结果需要提交日志文件,于是百度了下安卓的获取日志方法,其实很简单,7个步骤搞定,下面把我的总结分享给大家. 1.下载adb工具包 https://pan.baidu.co ...

  10. 内置函数,重要的四个reduce,map,lambda,filter

    #filter过滤器#filter(函数,列表)#把列表里的元素序列化,然后在函数中过滤# str=["a","b","c","d ...