题目分析


来源:acwing
分析:

所求即为强连通分量的个数,然后计算每个强连通分量中点的个数,相加即可。

所谓强连通分量,它是一个子图,其中任意两点可以相互到达,并且再加一个点,就不能满足任意两点能够互相到达,所以它是一个极大子图。

求强连通分量,以及每个强连通分量中点的数量,有tarjan算法,所以这题是一道模板题。

直接背模板,就可以拿全分。

tarjan算法模板请参考笔者的博文:
算法提高课-图论-有向图的强连通分量-AcWing 1174. 受欢迎的牛:tarjan算法求强连通分量、tarjan算法板子、强连通图

ac代码

#include<bits/stdc++.h>
using namespace std;
const int N = 10010, M = 100010;
int n, m;
int h[N],e[M], ne[M], idx;
int stk[N],top;
int dfn[N], low[N], timestamp;
bool in_stk[N];
int ans;void add(int a, int b){e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}void tarjan(int u){dfn[u] = low[u] = ++ timestamp;stk[ ++ top] = u, in_stk[u] = true;for(int i = h[u]; ~i; i = ne[i]){int j = e[i];if(!dfn[j]){tarjan(j);low[u] = min(low[u], low[j]);}else if( in_stk[j])low[u] = min(low[u], dfn[j]);}if(dfn[u] == low[u]){int y, cnt = 0;do{y = stk[top--];in_stk[y] = false;cnt++;}while(y != u);ans += (cnt -1)* cnt /2;}
}int main(){cin >> n >> m;while(m --){int a, b;cin >> a >> b;add( a, b);}for(int i = 1; i <= n; i ++)if(!dfn[i]) tarjan(i);cout << ans << endl;
}

题目链接

https://www.acwing.com/problem/content/3223/

CSP认证201509-4 高速公路[C++题解]:强连通分量、tarjan算法模板题相关推荐

  1. 强连通分量(Tarjan算法)和缩点

    强连通分量(Tarjan算法)和缩点 一些定义 给定一张有向图,对于图中任意两个节点 xxx 和 yyy ,存在从 xxx 到 yyy 的路径,也存在从 yyy 到 xxx 的路径,则称该有向图为强连 ...

  2. 强连通分量(Tarjan算法) 图解

    强连通分量(Tarjan算法) 前言 第一件事:没事不要while(m–),会带来不幸 第二件事:看博客先看看评论,如果博主他写错了的话- 简介 先讲几个定义 强连通:两个顶点 uuu,vvv 可以相 ...

  3. 有向图强连通分量tarjan算法

    转自:http://www.byvoid.com/blog/scc-tarjan/ http://blog.csdn.net/geniusluzh/article/details/6601514 在有 ...

  4. 图之强连通、强连通图、强连通分量 Tarjan算法

    一.解释 在有向图G中,如果两个顶点间至少存在一条互相可达路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极大强 ...

  5. 有向图的强连通分量--Tarjan算法---代码分析

    本文就是做个代码分析,顺便说下理解. 一.预备知识: 需要知道什么是: 回边.前向边.交叉边 二.上代码: #include<algorithm> #define NIL -1using ...

  6. 强连通分量——tarjan算法缩点

    一. 什么是强连通分量? 强连通分量:在有向图G中,如果两个顶点u,v间(u->v)有一条从u到v的有向路径,同时还有一条从v到u的有向路径,则称两个顶点强连通(strongly connect ...

  7. 求无向图的连通分量或有向图的强连通分量—tarjan()ccf高速公路

    概念定义: 在图论中,连通图基于连通的概念. 1. 连通(无向图): 若顶点Vi能通过路径到达Vj,那么称为Vi和Vj是连通的 对无向图:若从顶点Vi到顶点Vj有路径相连(当然从j到i也一定有路径), ...

  8. CSP认证201509-2 日期计算[C++题解]:枚举、模拟

    题目分析 来源:acwing 分析: 主要是判断2月多少天.然后就是遍历每个月,依次减去当前月的天数,发现days还剩多少天就是当月几号. 其实这里是背的模板,日期题模板更难一点的题目是 CSP认证 ...

  9. CSP认证201503-4 网络延时[C++题解]:树的直径

    题目分析 来源:acwing 分析: 树的直径的概念: 树上最远的两个节点之间的距离就被称为树的直径,连接这两点的路径被称为树的最长链. 类似于圆的直径的概念:圆上直线距离最远的两个点构成直径. 这是 ...

最新文章

  1. 近10年数据智能团队建设,联想总结了由内而外的发展经验 | 专访联想集团副总裁田日辉...
  2. Java注解学习笔记
  3. 移动端开发, 常用CSS单位
  4. 如何在Exchange中处理不能发送的信息?
  5. 《MonoTouch开发实践指南》一3.6 小结
  6. 音乐播放类应用后台播放耗电评测报告
  7. oracle0数据库论文总结,大学oracle数据库总结(考试必备)
  8. c ++类成员函数_仅使用C ++创建具有公共数据成员的类
  9. mysql 1215_mysql执行带外键的sql文件时出现mysql ERROR 1215 (HY000): Cannot add foreign key constraint的解决...
  10. 服务器上的安全数据没有此工作站信任关系的计算机账户_综合监控系统等级保护安全解决方案...
  11. gzip: File too large错误
  12. matlab广义误差分布,基于Copula函数的多源径流预报误差联合分布研究
  13. Windows下如何强制删除文件夹及文件的命令
  14. Java数字转化为阿拉伯数字_Java实现中文数字转换为阿拉伯数字
  15. 高通camera结构(摄像头基础介绍)
  16. 火绒卸载之后的残留文件夹问题
  17. 《OD学Oozie》20160807Oozie
  18. openlayers3中geowebcache的使用
  19. 2020一级计算机考证
  20. Online PDF to PNG, PDF to JPEG, PDF to WEBP, PDF to TXT - toolfk程序员在线工具网

热门文章

  1. 游戏服某个服外网玩家连不上,内网才能连
  2. NYOJ--21--bfs--三个水杯
  3. java基础篇7----java.util中的Scanner类的使用
  4. SQL 隐藏手机号中间四位
  5. 优秀的软件测试人员应该具备的素质
  6. loadrunner场景中按scenario和group执行的区别
  7. a标签 vue 动态点击_vue实现a标签点击高亮方法
  8. 用神经网络学习Fe原子光谱并反向求导计算权重
  9. 【STM32】FreeRTOS 系统配置
  10. 准备入门IC的全局观念系列-下