原题链接 考察:LCA+Tarjan 思路: 因为N<=1e5,所以上个算法N2 不适用.这里仍然是上道题的思路,枚举所有不在最小生成树的边.求出边两端点u,v.找到u,v在最小生成树的最大值d1和次大值d2.然后通过sum-d1(d2)+road[i].w求解答案. LCA优化的是求两端点之间的最 ...
分类:
其他好文 时间:
2021-05-24 04:51:20
阅读次数:
0
有向图强连通分量SCC P3387【模板】缩点 注释放代码里啦 时间复杂度O(n+m) #include<iostream> #include<cstdio> #include<cstdlib> #define maxn 100010 #define maxm 1000010 using names ...
分类:
其他好文 时间:
2021-05-24 02:15:52
阅读次数:
0
tarjan 模板 int low[N],dfn[N],Stack[N],belong[N]; //最小下表,时间戳,一个用数组模拟的栈 //belong[x]表示x所属的强连通分量的编号 int idx,top;//,动态时间戳,栈顶 int scc; //scc表示强连通分量的个数 bool i ...
分类:
其他好文 时间:
2021-04-23 12:23:00
阅读次数:
0
有n个交汇点和m条双向道路,一个人可以凭借现有的通道从一个点到达另一个点。确定这样一种方案,使每条道路改为单向行驶,但仍满足能够从任意一个点到达另一任意点的要求 ...
分类:
其他好文 时间:
2021-04-05 12:19:33
阅读次数:
0
求强连通/割点/桥 step1 将图深搜,形成深搜树,按遍历顺序标号->dfn[i] step2 将low[i]初始化为dfn[i] step3 回溯时low[i]=min(low[i],low[i的儿子]) 判断 DFN[]作为这个点搜索的次序编号(时间戳) LOW[]作为每个点在这颗树中的,子树 ...
分类:
编程语言 时间:
2021-03-16 11:48:55
阅读次数:
0
近期一直在刷这方面的题 因为没法学新知识 但又想写点什么 就水篇博文吧 引理 简单来说,在一个有向图中,若所有点之间两两互相直接可达,则将这个图成为强连通分量 强连通分量可以是某个有向图中的子图 求强连通分量可以使用 Tarjan,Kosaraju 或者 Garbow 算法 个人感觉 Tarjan算 ...
分类:
其他好文 时间:
2021-02-01 12:39:26
阅读次数:
0
国际惯例:题目链接 题目大意:给定有向图,问有多少个点可以被除自己以外所有点到达。 部分分:按照题意模拟,我每个点跑一次$Dfs$,暴力统计,看看多少个点可以被所有点达到。 感觉也没啥好说的了...$Tarjan$缩点,然后发现如果存在这么一坨点,他们必然是出度为$0$的,否则的话,这个点如果能回来 ...
分类:
其他好文 时间:
2020-12-28 12:00:34
阅读次数:
0
#include<iostream> #include<cstring> using namespace std; const int maxn=50010; int head[maxn],cnt; int dfn[maxn],low[maxn],tot,stack[maxn],idx,visit[ ...
分类:
其他好文 时间:
2020-11-13 12:49:27
阅读次数:
7
题目链接 Solution [JSOI2012]越狱老虎桥 题目大意:给定一张带权无向图,你可以任意添加一条边,求权值最小的割边的最大值 Tarjan,贪心 分析: 我们先考虑是一棵树的情况,显然每一条边都是割边,我们添加一条边可以产生一个简单环,那么环上的所有边就都不是割边了 考虑贪心,我们将边权 ...
分类:
Web程序 时间:
2020-11-11 16:51:13
阅读次数:
77
Aimeeeeeeeeeeeeeeeeeeeeeeeeee 很简单的东西 就是用tarjan缩个点,然后对于这个新图,考虑入读和出度为1的点就行了 #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #i ...
分类:
Web程序 时间:
2020-11-06 02:38:38
阅读次数:
30