题目大意:
判断图中有几个环

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int num=10010;
/******************/
struct node{int u,v,next;
}e[num*5];
int head[num],cnt,cnt2;
/******************/
int dfn[num],low[num],ind,t,stack[num],cnt3,f[num],w[num];
bool vis[num];
/******************/
int n,m,ans;
/******************/
void int_i(void)
{cnt=-1;memset(head,-1,sizeof(head));memset(dfn,0,sizeof(dfn));memset(low,0,sizeof(low));ind=0;t=0;cnt3=0;memset(w,0,sizeof(w));return ;
}
void addedge(int u,int v)
{e[++cnt].v=v;e[cnt].u=u;e[cnt].next=head[u];head[u]=cnt;return ;
}
void tarjan(int u)
{int v;dfn[u]=low[u]=++ind;stack[++t]=u;vis[u]=true;for(int i=head[u];i!=-1;i=e[i].next){v=e[i].v;if(!dfn[v]){tarjan(v);low[u]=min(low[u],low[v]);}else {low[u]=min(low[u],dfn[v]);}}if(dfn[u]==low[u]){cnt3++;do{v=stack[t--];vis[v]=false;f[v]=cnt3;w[cnt3]++;}while(v!=u);if(w[cnt3]>1) ans++;}return ;
}
int main()
{int u,v;int_i();scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d",&u,&v);addedge(u,v);}for(int i=1;i<=n;i++){if(!dfn[i]){tarjan(i);}}printf("%d\n",ans);return 0;
}/*5 42 43 51 24 1*/

BZOJ1654 奶牛舞会+tarjan算法(入门题目)+判断图中有几个环相关推荐

  1. 判断图中是否存在环的方法

    判断图中是否存在环一般有四种方法:① 拓扑排序(对于有向图来说的),一般会结合dp求解最长/短路径: ② 强连通分量算法/双连通分量算法: ③ spfa判环 :④ 直接dfs遍历一遍,在遍历节点的过程 ...

  2. bzoj 1654: [Usaco2006 Jan]The Cow Prom 奶牛舞会 -- Tarjan

    1654: [Usaco2006 Jan]The Cow Prom 奶牛舞会 Time Limit: 5 Sec  Memory Limit: 64 MB Description The N (2 & ...

  3. jquery判断方法是否存在_判断图中是否有环的三种方法

    0.什么是环? 在图论中,环(英语:cycle)是一条只有第一个和最后一个顶点重复的非空路径. 在有向图中,一个结点经过两种路线到达另一个结点,未必形成环. 1.拓扑排序 1.1.无向图 使用拓扑排序 ...

  4. aop判断方法是否执行成功_判断图中是否有环的三种方法

    0.什么是环? 在图论中,环(英语:cycle)是一条只有第一个和最后一个顶点重复的非空路径. 在有向图中,一个结点经过两种路线到达另一个结点,未必形成环. 1.拓扑排序 1.1.无向图 使用拓扑排序 ...

  5. 经典算法面试题目-判断s2是否是s1的旋转字符串(1.8)

    题目 Assume you have a method isSubstring which checks if one word is a substring of another. Given tw ...

  6. 栈判断字符串是否为中心对称_数据结构和算法入门之判断括号字符串的合法性(valid parentheses)...

    今天终于开始看栈的部分咯!栈这个东西没啥好介绍的,我想基本只要写过一丢丢代码的人已经都非常清楚了.今天这个题目是一个非常简单但是也很经典地用到栈这个数据结构的题,废话不多说,原题链接如下: Loadi ...

  7. 发现水贴(算法入门题目003)

    题目 我们有一个ID列表,其中存着某论坛所有帖子的作者ID. 另外,我们已经得到准确情报,在这个长长的列表中,有3个ID,每个出现次数都超过了总数的1/4.这毫无疑问是职业水军干的. 你的任务是快速地 ...

  8. 猴子搬香蕉(算法入门题目005)

    题目 A 地有一堆香蕉,共 w 只. 一只猴子要把香蕉从 A 地运输到 B 地. 两地相距 s 里. 猴子每次最多只能背 c 只香蕉. 无论背多少香蕉(甚至不背),猴子每走 1 里路,会吃掉 1 只香 ...

  9. 【算法入门】动态图展示 6 个常用的数据结构,一目了然!

    数据结构的确很枯燥,尤其是初学时候,不知道到底有啥用.不过随着编码年限的增长,我们越会发现它真的很有用,巧妙的数据结构是算法高效实现的助推剂. 今天的文章不会用文字和静态图展现常用的数据结构,因为这种 ...

最新文章

  1. 北航学长:DCIC 2021的算法方案讲解
  2. mysql i o 高_经典案例:磁盘I/O巨高排查全过程
  3. docker 添加端口映射_Docker三大核心概念之容器
  4. SAP CRM WebClient UI上将text area里的文本清空的后台处理
  5. Show Desktop Pro FAQ
  6. 水晶报表提示“出现打印错误。将停止打印”的原因,非page_Init
  7. 下载python的步骤ios_如何使用 Python 开发 iOS 程序?
  8. win10下使用mklink命令给C盘软件搬家
  9. 【NOIP2016提高组复赛】蚯蚓 题解
  10. (一)市场调查大赛系列——市场调查研究选题
  11. C++实现求复数的模长
  12. android 蓝牙耳机 找不到驱动程序,bluetooth外围设备找不到驱动程序现象的解决方法介绍...
  13. 等效距离计算公式_等效焦距换算(等效焦距的计算公式)
  14. Java十进制转换为二进制
  15. Android生态系统进化论
  16. 2021年我的21个感悟(1/3)
  17. SAS卡,RAID卡,HBA卡区别与联系
  18. java基于springboot+vue的企业公司员工人事管理系统 nodejs 前后端分离
  19. webrtc笔记(5): 基于kurento media server的多人视频聊天示例
  20. 日语基础复习 Day 14

热门文章

  1. 北京万博浩源小心车辆购置税退税骗子
  2. obs上传文件到服务器,obs上传文件到指定路径
  3. 瑞柏匡丞:你是否希望“被遗忘”
  4. 3d数字孪生-智慧工厂可视化三维建模展示系统
  5. Matlab实现西格玛(Sigma)平滑滤波
  6. Visum中导入GIS地图
  7. 02年六代雅阁的整备质量_大众迈腾的“姐妹”!气场堪比雅阁,配四轮独悬 国六,却无人理_搜狐汽车...
  8. 用python写一个动态壁纸工具
  9. 平和二中高考2021成绩查询,2021二中艺术考试成绩
  10. 免费计算机操作基础知识ppt,计算机基础知识与基本操作要点课件.ppt