思路:

缩点,计算入度为0点的个数即可;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4.  
  5. const int N=1e5+10;
  6.  
  7. struct asd{
  8. int to;
  9. int next;
  10. };
  11. asd q[N*4];
  12. int head[N*4],tol;
  13. int n,m;
  14. int dfn[N];
  15. int low[N];
  16. int stap[N];
  17. int in[N];
  18. int vis[N];
  19. int tp,p,cnt;
  20. int kc[N],kr[N];
  21.  
  22. void add(int a,int b)
  23. {
  24. q[tol].to=b;
  25. q[tol].next=head[a];
  26. head[a]=tol++;
  27. }
  28.  
  29. void tarjan(int u)
  30. {
  31. dfn[u]=low[u]=++tp;
  32. stap[++p]=u;
  33. vis[u]=1;
  34. for(int v=head[u];v!=-1;v=q[v].next)
  35. {
  36. int i=q[v].to;
  37. if(!dfn[i])
  38. {
  39. tarjan(i);
  40. low[u]=min(low[u],low[i]);
  41. }
  42. else if(vis[i])
  43. low[u]=min(low[u],dfn[i]);
  44. }
  45. if(dfn[u]==low[u])
  46. {
  47. cnt++;
  48. int temp;
  49. while(1)
  50. {
  51. temp=stap[p];
  52. vis[temp]=0;
  53. in[temp]=cnt;
  54. p--;
  55. if(temp==u)
  56. break;
  57. }
  58. }
  59. }
  60.  
  61. int fun()
  62. {
  63. memset(kc,0,sizeof(kc));
  64.  
  65. for(int i=1;i<=n;i++)
  66. {
  67. for(int v=head[i];v!=-1;v=q[v].next)
  68. {
  69. int to=q[v].to;
  70. if(in[to]!=in[i])
  71. {
  72. kc[in[to]]++;
  73. }
  74. }
  75. }
  76.  
  77. int ans=0;
  78. for(int i=1;i<=cnt;i++)
  79. {
  80. if(!kc[i])
  81. ans++;
  82. }
  83. return ans;
  84. }
  85.  
  86. int main()
  87. {
  88. int T,cas=1,x,y;
  89. scanf("%d",&T);
  90. while(T--)
  91. {
  92. scanf("%d%d",&n,&m);
  93.  
  94. tol=0;
  95. memset(head,-1,sizeof(head));
  96. memset(dfn,0,sizeof(dfn));
  97. memset(vis,0,sizeof(vis));
  98.  
  99. while(m--)
  100. {
  101. scanf("%d%d",&x,&y);
  102. add(x,y);
  103. }
  104. tp=p=cnt=0;
  105. for(int i=1;i<=n;i++)
  106. {
  107. if(!dfn[i])
  108. tarjan(i);
  109. }
  110. printf("Case %d: %d\n",cas++,fun());
  111. }
  112. return 0;
  113. }

lightoj 1034【强连通+缩点】的更多相关文章

  1. poj2553 强连通缩点

    The Bottom of a Graph Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 10114   Accepted: ...

  2. hdu 4635 Strongly connected 强连通缩点

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4635 题意:给你一个n个点m条边的图,问在图不是强连通图的情况下,最多可以向图中添多少条边,若图为原来 ...

  3. BZOJ 1051: [HAOI2006]受欢迎的牛 强连通缩点

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1051 题解: 强连通缩点得到DAG图,将图转置一下,对入度为零的点跑dfs看看能不能访问 ...

  4. hdu 2767 Proving Equivalences 强连通缩点

    给出n个命题,m个推导,问最少添加多少条推导,能够使全部命题都能等价(两两都能互推) 既给出有向图,最少加多少边,使得原图变成强连通. 首先强连通缩点,对于新图,每一个点都至少要有一条出去的边和一条进 ...

  5. UVA - 11324 The Largest Clique 强连通缩点+记忆化dp

    题目要求一个最大的弱联通图. 首先对于原图进行强连通缩点,得到新图,这个新图呈链状,类似树结构. 对新图进行记忆化dp,求一条权值最长的链,每一个点的权值就是当前强连通分量点的个数. /* Tarja ...

  6. poj-1904(强连通缩点)

    题意:有n个王子,每个王子都有k个喜欢的女生,王子挑选喜欢的女生匹配,然后再给你n个王子最开始就定好的匹配,每个王子输出能够结合且不影响其他王子的女生匹配 解题思路:强连通缩点,每个王子与其喜欢的女生 ...

  7. NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序

    原文链接https://www.cnblogs.com/zhouzhendong/p/9258043.html 题目传送门 - 洛谷P3953 题目传送门 - Vijos P2030 题意 给定一个有 ...

  8. BZOJ1179 [Apio2009]Atm Tarjan 强连通缩点 动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1179 题意概括 有一个有向图,每一个节点有一个权值,其中有一些结束点. 现在,你要从S出发,到达任 ...

  9. BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1051 题意概括 有n只牛,有m个羡慕关系. 羡慕关系具有传递性. 如果A羡慕B,B羡慕C,那么我们 ...

  10. 强连通缩点— HDU1827

    强连通缩点以后最终形成的是一棵树 我们可以根据树的性质来看缩点以后的强连通分量图,就很好理解了 /* gyt Live up to every day */ #include<cstdio> ...

随机推荐

  1. java设计模式之综述

    一.什么是设计模式 设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系 ...

  2. Struts action

    <action name="KnowledgeBankManageAction_*" class="knowledgeBankManageAction" ...

  3. ubuntu 12.04安装alsa-lib、alsa-utils【转】

    1. alsa-lib ./configure sudo make install 注意:默认是安装到/usr/这个目录下面,但是我测试多了多次,安装了alsa-lib之后,系统就没有声音了,也没有找 ...

  4. sdut oj 1163 C语言实验——排列 (当初不会递归生成排列,这个题目现在才补上 刘汝佳给出了写法 *【模板】 当然有生成全排列的函数存在 )

    C语言实验——排列 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 有4个互不相同的数字,请按序输出由其中三个不重复数字组成的排列 ...

  5. Gym - 100187E E - Two Labyrinths —— bfs

    题目链接:http://codeforces.com/gym/100187/problem/E 题解:一开始做的时候是将两幅图合并,然后直接bfs看是否能到达终点.但这种做法的错的,因为走出来的路对于 ...

  6. java 接口自动化测试之数据请求的简单封装

    我们自己用java写接口自动化测试框架或者做个接口自动化测试平台的话,是需要自己进行相关的请求的,因此我们需要简单的封装下httpclient,我新建了一个http工具类,将get方法和post方法进 ...

  7. 《数学之美》第15章 矩阵计算和文本处理中两个分类问题——SVD分解的应用

    转载请注明原地址:http://www.cnblogs.com/connorzx/p/4170047.html 提出原因 基于余弦定理对文本和词汇的处理需要迭代的次数太多(具体见14章笔记),为了找到 ...

  8. ansible 自动ssh

    http://szgb2016.blog.51cto.com/340201/1669731 安装 yum -y install ansible expect 生成key,ssh-keygen -t r ...

  9. SqlServer--学习触发器

    触发器是一种特殊的存储过程,一种不能被显式执行,而必须依附于一个事件的过程 主要作用:自动化操作;减少手动操作以及出错的几率. 触发器分类:DML(Data Manipulation Language ...

  10. powershell 扩展 (PSCX) 安装指南

    在玩ansible的过程中,使用win_unzip模块时powershell支持不了,需要安装PSCX对powershell进行扩展,随手记录下安装过程. 从官网下载的Pscx是一个zip压缩文件,解 ...