有点忧愁。\(CSP\)也考\(Tarjan\)缩点的嘛。

原理咱也不明白,咱也不敢学,找到模板就是抄。

#include<bits/stdc++.h>
const int maxn = 10000;
const int maxm = 100000; using namespace std; int to[maxm + 10];
int nex[maxm + 10];
int head[maxn + 10], cnt = 0; void addEdge(int a, int b)
{
to[cnt] = b; nex[cnt] = head[a]; head[a] = cnt++;
} int low[maxn + 10], dfn[maxn + 10], sta[maxn + 10], belong[maxn + 10];
int index, top;
int scc;
bool inStack[maxn + 10];
int num[maxn + 10]; void Tarjan(int u)
{
int v;
low[u] = dfn[u] = ++index;
sta[top++] = u;
inStack[u] = true;
for (int i = head[u]; i != -1; i = nex[i])
{
v = to[i];
if (!dfn[v])
{
Tarjan(v);
if (low[u] > low[v])
low[u] = low[v];
}
else if (inStack[v] && low[u] > dfn[v])
low[u] = dfn[v];
}
if (low[u] == dfn[u])
{
scc++;
do
{
v = sta[--top];
inStack[v] = false;
belong[v] = scc;
num[scc]++;
} while (v != u);
}
} int main()
{
int n, m;
scanf("%d%d", &n, &m); memset(head, -1, sizeof(head));
for (int i = 1, a, b; i <= m; i++)
{
scanf("%d%d", &a, &b);
addEdge(a, b);
} memset(dfn, 0, sizeof(dfn));
memset(inStack, false, sizeof(inStack));
memset(num, 0, sizeof(num));
index = scc = top = 0;
for (int i = 1; i <= n; i++)
{
if (!dfn[i])
Tarjan(i);
} int ans = 0;
for (int i = 1; i <= scc; i++)
{
ans += num[i] * (num[i] - 1) / 2;
}
printf("%d\n", ans); return 0;
}

最新文章

  1. (转)利用libcurl获取新浪股票接口, ubuntu和openwrt实验成功(三)
  2. webstrom live templates
  3. Linux服务器模型及其对应的程序流程
  4. 如何给Visual Studio 2015安装XNA4.0
  5. 《高性能JavaScript》笔记
  6. cannot change version web module 3.0
  7. 五、案例-指令参考-freemarker指令、表达式
  8. Java基础 —— Java常用类
  9. Table of Contents - Spring
  10. tomcat部署javaweb项目的三种方式
  11. HTTP代理协议 HTTP/1.1的CONNECT方法
  12. JSOI2007文本生成器
  13. 解决Struts2.2.20版本的标签不支持style属性的问题
  14. 计算机世界的道(C/ASM)生一(OS),一生二(API),二生万象(MFC/COM)——学包装技术的程序员将来会损失比较大,因为不了解本质,一旦包装过时就会被淘汰
  15. awk 详解+实例
  16. 微信公众平台测试号 “微信登录失败,redirect_uri域名与后台配置不一致,错误代码10003”
  17. ubuntu Anaconda install
  18. cv2.getRotationMatrix2D函数
  19. [HAOI2008]移动玩具(状压&amp;带权二分图)
  20. (转载)JWebUnit做Web项目自动化测试

热门文章

  1. react一写工具
  2. Django使用mysql数据的流程
  3. python3 之 趣味数学题(爱因斯坦)
  4. Fabric1.4源码解析:Peer节点启动过程
  5. 经典sql面试题(学生表_课程表_成绩表_教师表)
  6. NIO-概览
  7. 【Android - 自定义View】之自定义View实现“刮刮卡”效果
  8. Prometheus 自动发现
  9. Chapter 07-Basic statistics(Part2 Frequency and contingency tables)
  10. git的用法 回到某个版本