题目大意: 有n个节点m条边,边都是单向的,请你添加最少的边使得起点s到其他与其他每一个点之间都能互相到达 这题一看就是一个缩点啊 其实对于原有的m条边相连的一些点,如果之前他们已经形成了强连通分量(scc),那么它们之前就可以相互到达(不用修路),对于这些点我们可以把它们“缩”成一个“点”,这其实就是Tarjian缩点的思想 其实luogu里还有很多缩点的模板题,自己去找找吧,都不难的 那么如果你会了缩点,这个题只要缩完点之后统计一下入度为0的点就行了(让强连通分量之间连边) #include…
题目大意:有一个$n$个点$m$条边的有向图,起点$S$,要求你添加最少的边使得$S$可以到达所有点 题解:缩点,答案就是没有入边的强连通分量个数,注意,如果起点$S$所在的强连通块没有入边则不计入答案 卡点:无 C++ Code: #include <cstdio> #define maxn 5010 #define maxm 5010 int head[maxn], cnt; struct Edge { int from, to, nxt; } e[maxm]; inline void a…
E - Reachability from the Capital  CodeForces - 999E 题目链接:https://vjudge.net/contest/236513#problem/E 大意:给你n条边的关系,输入的第一个只指向第一个,然后让你判断要想从指定的点到达剩下的所有的点,问你最少需要添加多少条边才符合要求. 思路:首先使用tarjan算法进行染色,缩点.到最后判断 缩减后 入度为零的不含有城市中心的强连通子图的个数就可以了!!! 原因,染完色之后,如果有入度为0的强连…
E. Reachability from the Capital 这个题目就是给你一个有向图,给你起点,问增加多少条边让这个图变成一个连通图. 这个因为n只有5000m只有5000 所以可以暴力枚举这个n,用n*n的复杂度过去. #include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <stack> #include <bits…
题目描述 There are nn cities and mm roads in Berland. Each road connects a pair of cities. The roads in Berland are one-way. What is the minimum number of new roads that need to be built to make all the cities reachable from the capital? New roads will a…
There are nn cities and mm roads in Berland. Each road connects a pair of cities. The roads in Berland are one-way. What is the minimum number of new roads that need to be built to make all the cities reachable from the capital? New roads will also b…
题目链接:http://codeforces.com/contest/999/problem/E 题目: 题意:给你n个城市,m条单向边,问你需要加多少条边才能使得从首都s出发能到达任意一个城市. 思路:tarjan缩点,结果就是缩点新建的图中入度为0的点的数量. 代码实现如下: #include <set> #include <map> #include <queue> #include <stack> #include <cmath> #in…
题意: 问至少加几条边 能使点s可以到达所有的点 解析: 无向图的连通分量意义就是  在这个连通分量里 没两个点之间至少有一条可以相互到达的路径 所以 我们符合这种关系的点放在一起, 由s向这些点的任意一个连边即可 即为求除s所在的连通分量以外的  入度为0的连通分量 #include <bits/stdc++.h> #define mem(a, b) memset(a, b, sizeof(a)) #define rap(i, a, n) for(int i=a; i<=n; i++)…
求联通分量个数,在dfs一次 #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <vector> #include <queue> #include <stack> #include <cstdlib> #include <iomanip> #include <cmath…
题目链接: https://codeforces.com/contest/999/problem/E 题意: 在有向图中加边,让$S$点可以到达所有点 数据范围: $ 1 \leq n \leq 5000$ 分析: 先从$S$点出发,所有不可达点标记一下 如果某个不可达点可以被另一个不可达点到达,那么把这个不可达点标记为可达 最后计算不可达点的数量 去年做过的题目,今年反而不会写了 ac代码: #include <bits/stdc++.h> #define ll long long usin…