摘要:
传送门 因为要随机删除一条边,而枚举所有边肯定会超时,经过发现,先求出一遍最短路,而要删除的边肯定在最短路径上,删除其他的边对最短路没有影响。 所以可以先求出最短路,再枚举删除最短路上的每一条边再求最短路。 ——代码 1 #include <queue> 2 #include <cstdio> 3 阅读全文
摘要:
传送门 建图麻烦,建完图搞一遍Floyd就好了。 ——代码 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 5 using namespace std; 6 7 int n, s, a, b; 8 int t, x[401 阅读全文
摘要:
传送门 基于Floyd的动态规划原理,我们可以只用进行一次Floyd。 而题目给出的限制条件相当于给Floyd加了时间限制而已。 还是得靠对Floyd的理解。 ——代码 1 #include <cstdio> 2 #include <iostream> 3 4 using namespace std 阅读全文
摘要:
传送门 1.最大生成树 可以求出最大生成树,其中权值最小的边即为答案。 2.最短路 只需改变spfa里面的松弛操作就可以求出答案。 ——代码 1 #include <queue> 2 #include <cstdio> 3 #include <cstring> 4 5 using namespace 阅读全文
摘要:
传送门 来自题解:https://www.luogu.org/wiki/show?name=题解+P3385 1.Bellman-Ford 通过Belman-Ford求出最短路,然后在进行一遍松弛操作,如果可以再松弛说明存在负环,否则不存在。 2.SPFA SPFA有两种实现方法。一个是BFS一个是 阅读全文
摘要:
传送门 树链剖分固然可以搞。 但还有另一种做法,可以看出,增加一个节点的权值会对以它为根的整棵子树都有影响,相当于给整棵子树增加一个值。 而给以某一节点 x 为根的子树增加一个权值也会影响当前子树,节点 y 所增加的值为 dis[y] * z - (dis[x] - 1) * z,每个节点都会增加 阅读全文