文章目录

  • 题目解答
  • 题目来源

题目解答



来源:acwing

分析:

第一问:通过tarjan算法求出强连通分量并且缩点后,统计入度为0的点的个数p即可。

第二问,至少加几条边才能使图变成强连通分量?这个答案是max(p,q)。含义是入度为0,和出度为0的点的个数的最大值。但特例是,如果只有1个强连通分量,那么不需要加边,直接输出0即可。

第二问的问题实际上是:对于任意一个有向无环图,至少加多少条边,才能使之变成强连通分量?记入度为0的点个数是p,出度为0的点的个数为q。

答案是max(p, q). 证明过程可以自行搜索。

下面的主要部分还是tarjan的板子
算法提高课-图论-有向图的强连通分量-AcWing 1174. 受欢迎的牛:tarjan算法求强连通分量、tarjan算法板子、强连通图

ac代码


#include<bits/stdc++.h>
using namespace std;
const int N = 110, M = 10010;
int n;
int h[N], e[M], ne[M], idx;
int dfn[N], low[N], ts;
int stk[N], top;
bool in_stk[N];
int id[N], scc_cnt;
int din[N], dout[N];void add(int a, int b){e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}void tarjan(int u){dfn[u] = low[u] = ++ ts;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;++ scc_cnt;do{y = stk[top --];in_stk[y]  = false;id[y] = scc_cnt;}while(y != u);}
}int main(){cin >> n;memset(h, -1, sizeof h);for(int i = 1; i <= n; i ++){int t;while(cin >> t, t) add(i, t);}for(int i = 1; i <= n; i++)if(!dfn[i]) tarjan(i);// 统计出度和入度for(int i = 1; i <= n; i ++ ){for(int j = h[i]; ~j; j = ne[j]){int k = e[j];int a = id[i], b = id[k];if(a != b){dout[a] ++, din[b] ++;}}}int a = 0, b = 0;// 遍历每个强连通分量,统计缩点后的点的入度和出度for(int i =  1; i <= scc_cnt; i ++){if(!din[i]) a ++;if(!dout[i]) b++;}cout << a << endl;// 只有1个强连通分量,不需要加边if(scc_cnt == 1) cout << 0 << endl;else  cout << max(a, b) << endl;
}

题目来源

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

算法提高课-图论-有向图的强连通分量-AcWing 367. 学校网络:强连通分量、tarjan算法相关推荐

  1. 算法提高课-图论-有向图的强连通分量-AcWing 1174. 受欢迎的牛:tarjan算法求强连通分量、tarjan算法板子、强连通图

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 强连通图:给定一张有向图.若对于图中任意两个结点x,y,既存在从x到y的路径,也存在从y到x的路径,则称该有向图是"强连通 ...

  2. 算法提高课-图论-欧拉回路和欧拉路径-AcWing 1185. 单词游戏:判断有向图是否存在欧拉路径、并查集

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 把每个单词看成一条边!!!首字母到尾字母的一条边,最多共有26个点(26个小写的英文字母),然后问能否把所有边串起来. 其实,对欧拉 ...

  3. 算法提高课-图论-欧拉回路和欧拉路径-AcWing 1184. 欧拉回路:有向图和无向图的欧拉回路

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 无向图欧拉回路:1)所有点的度都为偶数:2)所有边连通 有向图欧拉回路:1)所有点的入度等于出度:2)所有边连通 AC代码 #inc ...

  4. 算法提高课-图论-负环-AcWing 361. 观光奶牛:spfa判正环、负环、01分数规划、二分

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 题目要求ΣfiΣgi\frac{\Sigma{f_i}}{\Sigma{g_i}}Σgi​Σfi​​的最大值,这种问题称为01分数规 ...

  5. 算法提高课-图论-差分约束- AcWing 1169. 糖果:spfa求单源最短路、差分约束

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 差分约束系统 差分约束系统是一种特殊的N元一次不等式组.它包含N个变量X1,...,XnX_1,...,X_nX1​,...,Xn​ ...

  6. 算法提高课-图论-欧拉回路和欧拉路径-AcWing 1123. 铲雪车:披着欧拉回路外衣的小学数学题

    文章目录 题目解答 无向图的一笔画 有向图的一笔画 题目来源 题目解答 来源:acwing 分析: 对于一个给定的图,怎样判断是否存在着一个恰好包含了所有的边,并且没有重复的路径?这就是一笔画问题.用 ...

  7. 算法提高课-图论-单源最短路的综合应用-AcWing 342. 道路与航线:最短路dijkstra、拓扑排序 、综合题、好题

    题目分析 来源:acwing 分析: 道路:双向,边权非负, 航线:单向,边权可正可负,且无环. 根据题意,点可以分为很多团(连通块),团内部只有道路(道路是双向的,而且是连通的,所以不能存在航线,否 ...

  8. 算法提高课-图论-单源最短路的建图方式-AcWing 903. 昂贵的聘礼:建图巧妙、dijkstra、考虑等级

    题目分析 来源:acwing 由于终点是1号节点,建立虚拟节点S,如下建图(根据样例画图).S出发和每个点直连的边权代表直接买该物品花的金币数:而由S到1的任意一条通路,边权之和就是花费的金币数.所以 ...

  9. 算法提高课-图论-单源最短路的建图方式-AcWing 1127. 香甜的黄油:spfa最短路

    题目分析 来源:acwing 分析: 多源汇最短路.所以我们首先想到的是floyd算法, 可是它的复杂度是O(n3)O(n^3)O(n3),会超时.所以我们需要另外考虑. 任意一个点作为起点求出到所有 ...

最新文章

  1. C语言的单链表逆序和指定范围逆序
  2. 《Xcode实战开发》——2.8节调试区域
  3. java好还是python好-Python和Java哪个薪资更高、远景更好?
  4. 移动互联网的下个十年猜想
  5. mysql索引失效_导致MySQL索引失效的几种常见写法
  6. SQL基础【十四、In、Between and】
  7. 全国计算机等级考试暨南大学,9月暨南大学计算机等级考试报名时间通知
  8. iOS 下ARC的内存管理机制
  9. jQuery获取cookie
  10. 小米11终于来了,12月28日见!
  11. [links]CS以及一些水源朋友的BLog链接
  12. 开源的Web Service测试工具
  13. 分享修改Wke源代码后重新封装成Duilib控件的代码
  14. 程序设计语言的基本概念
  15. ipv6单播地址包括哪两种类型_IPV6详细讲解
  16. 整理一下vue 移动端模板框架搭建
  17. PicGo+Github图床配置
  18. android 音量调节不起作用,Android音量控制
  19. 美满电子-88E1111PHY
  20. win10无法连接windows服务器,无法连接SENS服务

热门文章

  1. bzoj 2186: [Sdoi2008]沙拉公主的困惑
  2. 在虚拟机环境下,电脑间拷贝配置好的伪分布式Hadoop环境,出现namenode不能启动的问题!...
  3. Event 系列: jquery event 源码
  4. Firefox3与WEB客户端开发相关的新特性
  5. html属性选择器怎么写,html – 具有“type”属性与make-up属性的CSS属性选择器和区分大小写...
  6. linux 软链接_面试 | Linux 下软链接和硬链接的区别
  7. vs调试按钮为灰色的_IntelliJ IDEA 调试 Java 8,实在太香了
  8. 【控制】《现代控制理论》谢克明老师-第4章-控制系统的稳定性
  9. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第8章-Lurie 型动态网络自适应牵制控制
  10. 【Matlab 控制】绘制盖尔圆