这道题目就是求强连通分量。。。

这里采用的是Tarjan算法:http://m.blog.csdn.net/blog/qq574857122/16361033

AC代码:

#include<iostream>v
#include<cstdio>
#include<cstring>
using namespace std;const int maxn = 10005;
struct Edge
{int key,next;
}edge[100000];
int pre[maxn],cnt,n,m,dfsNum,sccNum,top;
int stack[maxn],instack[maxn],dfsnum[maxn],low[maxn];void addedge(int x,int y)
{edge[cnt].key = y;edge[cnt].next = pre[x];pre[x] = cnt++;
}void Tarjan(int cur)
{dfsnum[cur] = ++dfsNum;low[cur] = dfsnum[cur];stack[top++] = cur;instack[cur] = 1;for(int i = pre[cur]; i != -1; i = edge[i].next){int v = edge[i].key;if(dfsnum[v] == 0) // 子树中还有边未遍历{Tarjan(v);if(low[cur] > low[v])low[cur] = low[v];}else if(instack[v])  //表示有父子关系,存在回边{if(low[cur] > dfsnum[v])low[cur] = dfsnum[v];}}if(low[cur] == dfsnum[cur])  //该点是强连通分量的根节点{while(top != 0 && stack[top-1] != cur){instack[stack[top-1]] = 0;top--;}sccNum++;}
}int main()
{   while(scanf("%d%d",&n,&m)!=EOF && m + n){memset(pre,-1,sizeof(pre));memset(instack,0,sizeof(instack));cnt = top = sccNum = dfsNum = 0;for(int i = 1; i <= m; i++){int a,b;scanf("%d%d",&a,&b);addedge(a,b);}for(int i = 1; i <= n; i++)if(dfsnum[i] == 0)Tarjan(i);if(sccNum == 1)printf("Yes\n");else printf("No\n");}return 0;
}

hdu 1269(Tarjan求强连通分量)相关推荐

  1. hdu 1269 tarjan求强连通分量

    tarjan求强连通分量的裸题复习,可当做模板. 1 #include <stack> 2 #include <cstdio> 3 #include <cstring&g ...

  2. The King’s Problem(tarjan求强连通分量缩点+匈牙利求有向无环图的最小路径覆盖)

    Link:http://acm.hdu.edu.cn/showproblem.php?pid=3861 The King's Problem Time Limit: 2000/1000 MS (Jav ...

  3. 洛谷 P2921 在农场万圣节Trick or Treat on the Farm (tarjan求强连通分量)

    洛谷 P2921 在农场万圣节Trick or Treat on the Farm (tarjan求强连通分量) 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N&l ...

  4. HDU-1269 Tarjan求强连通分量,模板题

    HDU 1269 题意:n个点m条单向边,问任意两个点是否连通. 总结:参考大神博客码的,有些地方还是不太明白. 而且这题还可以双向dfs做,有时间再做一下. // HDU-1269 #include ...

  5. Tarjan求强连通分量

    [算法定义] 在有向图中,如果两个顶点至少存在一条路径(可以相互通达),则称两个顶点强连通(strongly connected). 如果有向图G的每两个顶点都强连通,称G是一个强连通图. 非强连通有 ...

  6. 【HDU - 4635】Strongly connected(缩点,新图性质,建图,Tarjan求强连通分量)

    题干: Give a simple directed graph with N nodes and M edges. Please tell me the maximum number of the ...

  7. 图论 —— 图的连通性 —— Tarjan 求强连通分量

    [概述] Tarjan 算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树. 搜索时,把当前搜索树中未处理的节点加入一个堆栈,回溯时可以判断栈顶到栈中的节点是否为一个强连通分量. [ ...

  8. P1262 间谍网络 (Tarjan 求强连通分量)

    题目传送门:https://www.luogu.com.cn/problem/P1262 题意 题意转换成图的角度理解,给出初始可以访问的节点 D i D_i Di​ 以及访问这些节点需要的代价 W ...

  9. tarjan求强连通分量的思考

    我是按照这里的思路来的.这个博文只是感性理解. 递归树 关于递归树,这篇博文讲的很好,我只是给自己总结一下. 定义vis数组,在dfs连通图时赋予它们不同的含义: vis=0,表示这个点没有被访问. ...

最新文章

  1. 2020-11-28(全局变量和局部静态变量)
  2. 对TypeScript进行研究
  3. 如何自学成为一名数据科学家?
  4. 感恩有您!《大数据》祝您新年快乐!
  5. 接口测试--apipost如何解决接口重定向
  6. ExcelToDataTable
  7. numpy文件读写的三对函数
  8. 21天战拖记——Day6:复习阶段性完成!(2014-05-09)
  9. u 20ubuntu 安装 postfix_汽车天线安装指南
  10. java获取当前项目或类路径
  11. 中国人工智能学会通讯——融合经济学原理的个性化推荐
  12. 数学建模-线性优化模型
  13. 声音信号处理基频检测和时频分析
  14. 洛谷 P3987 我永远喜欢珂朵莉~(Splay+BIT+无限卡常)
  15. python对接支付宝支付_python对接支付宝PC端支付
  16. Android DataBinding RecyclerView AAPT: error: attribute adapter (aka......) not found.
  17. 时间序列的分析和预测
  18. Android Studio出现Execution failed for task ‘:app:processDebugMainManifest
  19. 丁鹿学堂:前端http面试总结,状态码详解
  20. 使用quirc识别二维码

热门文章

  1. 活动 | 玩转“视”界杯 —— 2018 上半年广告数据分析及短视频分享
  2. 喜茶获美团点评旗下基金4亿元投资!它离行业独角兽还差多远?
  3. JMS学习(六)--提高非持久订阅者的可靠性 以及 订阅恢复策略
  4. F5金飞:“双十一”安全事项三部曲
  5. kFreeBSD有活过来的迹象?UbuntuBSD
  6. 模式识别之Shape Context---利用Shape Context进行形状识别
  7. GridView导出到Excel和开源图表工具
  8. 我现在的简历以及后面的更改方向
  9. Java-InnerClass内部类
  10. BZOJ1782[USACO 2010 Feb Gold 3.Slowing down]——dfs+treap