题意:求强联通分量

Tarjan算法

  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<memory.h>
  5. #include<string.h>
  6. #include<algorithm>
  7. #include<cmath>
  8. #include<map>
  9. #define clc(a,b) memset(a,b,sizeof(a))
  10. typedef long double ld;
  11. typedef long long ll;
  12. const int N = ;
  13. const double eps=1e-;
  14. const int inf=-;
  15. const int maxn=1e5+;
  16. const int num=;
  17. const double Pi=acos(-);
  18. using namespace std;
  19.  
  20. struct gragh
  21. {
  22. int to;
  23. int next;
  24. } V[num];
  25.  
  26. bool instack[num]= {false};
  27. int low[num]= {},DFN[num]= {},Stap[num]= {},Belong[num]= {};
  28. int answer=;
  29. int Dindex,stop,Bcnt;
  30. int head[num];
  31. int edge;
  32.  
  33. void add(int a,int b)
  34. {
  35. V[edge].to=b;
  36. V[edge].next=head[a];
  37. head[a]=edge++;
  38.  
  39. }
  40. void tarjan(int u)
  41. {
  42. int v;
  43. DFN[u]=low[u]=++Dindex;
  44. instack[u]=true;
  45. Stap[stop++]=u;
  46. for(int i=head[u]; i!=-; i=V[i].next)
  47. {
  48. v=V[i].to;
  49. if(!DFN[v])
  50. {
  51. tarjan(v);
  52. if(low[v]<low[u])
  53. low[u]=low[v];
  54. }
  55. else if(instack[v]&&DFN[v]<low[u])
  56. low[u]=DFN[v];
  57. }
  58. if(DFN[u]==low[u])
  59. {
  60. int sum=;
  61. Bcnt++;
  62. do
  63. {
  64. v=Stap[--stop];
  65. instack[v]=false;
  66. Belong[v]=Bcnt;
  67. sum++;
  68. }
  69. while(v!=u);
  70. cout<<sum<<endl;
  71. if(sum!=)
  72. answer+=(sum*(sum-))/;
  73. }
  74. }
  75. void solve(int N)
  76. {
  77. stop=Bcnt=Dindex=;
  78. // clc(DFN,0);
  79. for(int i=; i<=N; i++)
  80. if(!DFN[i])
  81. tarjan(i);
  82. }
  83.  
  84. int main()
  85. {
  86. int n,m;
  87. int a,b;
  88. cin>>n>>m;
  89. clc(head,-);
  90. edge=;
  91. for(int i=; i<m; i++)
  92. {
  93. cin>>a>>b;
  94. add(a,b);
  95. }
  96. solve(n);
  97. cout<<answer<<endl;
  98. return ;
  99. }

CCF 认证4的更多相关文章

  1. CCF认证历年试题

    CCF认证历年试题 不加索引整理会死星人orz 第一题: CCF201712-1 最小差值(100分) CCF201709-1 打酱油(100分) CCF201703-1 分蛋糕(100分) CCF2 ...

  2. 小明种苹果(续)第十七次CCF认证

    小明种苹果(续)第十七次CCF认证 题目 原题链接 ](http://118.190.20.162/view.page?gpid=T93) 很高心,在现在CCF CSP可以下载自己当时的答卷了,也就是 ...

  3. CCF认证(1)

    #include <iostream> #include <windows.h> using namespace std; typedef struct letter{ int ...

  4. CCF 认证

    题意:字符串替换 string+map的应用 #include<iostream> #include<stdio.h> #include<stdlib.h> #in ...

  5. CCF认证考试——折点计数

    描述:简单题 #include<iostream> using namespace std; int main() { ], n, count = ; cin >> n; ; ...

  6. CCF认证之——相反数

    这道题目非常简单! #include<iostream> using namespace std; int main() { ],n,count=; cin >> n; ; i ...

  7. ccf认证 201709-4 通信网络 java实现

    试题编号:                                                               201709-4 试题名称: 通信网络 时间限制: 1.0s 内 ...

  8. ccf认证模拟题之三---最大的矩形

    问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi.这n个矩形构成了一个直方图.例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3 ...

  9. CCF认证201712-2游戏

    问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向. 游戏开始,从1号小朋 ...

随机推荐

  1. 【数位DP】Hdu 2089:不要62

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. zoj 3365

    题意 给你一个序列  改变尽可能少的数使其成为公差为一 递增的等差数列 可以将给你的序列减去一个等差数列 即num[i] -= i,若得到的数全部相等, 则说明给你的序列本身就满足条件  则只要寻求n ...

  3. firefly的环境搭建(2013年9月25日最新,win下最详图文)

    源地址:http://www.9miao.com/question-15-53785.html 一.安装PythonFirefly是采用Python编写的高性能.分布式游戏服务器框架,所以使用Fire ...

  4. 【BZOJ 2829】 2829: 信用卡凸包 (凸包)

    2829: 信用卡凸包 Description Input Output Sample Input 2 6.0 2.0 0.0 0.0 0.0 0.0 2.0 -2.0 1.5707963268 Sa ...

  5. 基于http.sys来开发的,真的是非常稳定

    真正的WEB服务器是不会用Indy写的.因为它是基于每连接每线程的. 其实真正的服务器需要下很多功夫,无法快速开发的.比如说,字符串处理.玩服务器基本上就是玩内存.举个例子: var str:Ansi ...

  6. 转:JavaScript中函数与对象的关系

    来自:http://www.nowamagic.net/javascript/js_RelationOfFunctionAndObject.php 在ajax兴起以前,很多人写JavaScript可以 ...

  7. nyist 737 相邻石子合并问题

    http://acm.nyist.net/JudgeOnline/problem.php?pid=737 动态规划状态方程: dp[i][j]=d[i][k]+dp[k+1][j]+(sum[k]-s ...

  8. Android开发UI之手动显示和隐藏软键盘

    1.方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示) InputMethodManager imm = (InputMethodManager) getSystemService(Contex ...

  9. poj 2513 Colored Sticks( 字典树哈希+ 欧拉回路 + 并查集)

    题目:http://poj.org/problem?id=2513 参考博客:http://blog.csdn.net/lyy289065406/article/details/6647445 htt ...

  10. x86、i386、i486、i586、i686和x86_64

    1.386与686 i386—几乎所有的X86平台,不论是旧的pentum或者是新的pentum-IV与K7系统CPU,都可以正常工作,i指得是Intel兼容的CPU,至于386就是CPU的等级.i5 ...