随笔分类 - 图论
摘要:P1629 邮递员送信 P1342 请柬 P1821[USACO07FEB]银牛派对Silver Cow Party 都是求的往返的最大,最小路径,用堆优化的dijkstra跑两遍就行,都是板子题 银牛派对的代码: #include <iostream> #include <cstdio> #inc
阅读全文
摘要:这个题是我照着题解一点点理解一点点打出来的。 拓扑排序: 定义:将有向图中的顶点以线性方式进行排序。即对于任何连接自顶点u到顶点v的有向边uv,在最后的排序结果中,顶点u总是在顶点v的前面。 确定一个图的拓扑排序是基于bfs的,bfs是基于队列的。 首先记录所有的点和所有点的入度(在连边时顺便求得的
阅读全文
摘要:Tarjan貌似跟Hopcroft都是Cornell的大神。总的来说, Tarjan算法基于一个观察,即:同处于一个SCC中的结点必然构成DFS树的一棵子树。 我们要找SCC,就得找到它在DFS树上的根。 那么怎么找呢? 考虑一下,如果DFS访问到了某个结点u,又顺着u来到了结点v, 但从v发出了一
阅读全文
摘要:次小生成树,就是求除了最小生成树之外最小的那个生成树。 下面介绍一下利用prim求次小生成树的主要步骤。 1.先求出来最小生成树。并将最小生成树任意两点之间路径当中的权值最大的那一条找出来,为什么要找最大的呢,因为生成树加入一条边之后一定构成了回路,那么肯定要去掉这个回路当中一条边才是生成树,那么,
阅读全文
摘要:以下转自:dalao 差分约束系统有两种方式可以求解,最短路和最长路。当我们把不等式整理成d[a]+w<=d[b]时,我们求最长路。整理成d[a]+w>=d[b]时,我们求最短路。当求最短路时,我们通常要把各点距离初始化为正无穷,求最短路,把各点距离逐渐减小,直到符合所有不等式。也就是开始 各点不符
阅读全文
摘要:一个直接用并查集求最小生成树的板子题 #include <iostream> #include <cstdio> #include <algorithm> using namespace std; struct llo{ int a,b,c; } e[20003]; int f[2003],n,m,
阅读全文
摘要:这道题跟猴子那道题差不多,挺简单的一个倒序并查集,变拆为建,把被毁的做标记,每个点可连的边也记录下来,先把能连的都连起来,然后从最后一个被毁的星球开始连可以连的边(指此时对方星球未被摧毁)作为下一个被毁星球重建的基础。细节比较多。 #include <iostream> #include <cstd
阅读全文
摘要:并查集+离散化,可惜我不会离散化。 然后我就学了学哈哈哈哈哈哈哈又会了点新东西。 用map做映射(虽然并不懂为什么用map)把所有的数都换到一个数组里去,然后手动去重(if(cnt[i]!=cnt[i-1]) Map[cnt[i]]=++sum;),放进map里去。 然后在做的时候就可以只用映射的数
阅读全文

浙公网安备 33010602011771号