hdu 2433 Travel (最短路树)】的更多相关文章

http://acm.hdu.edu.cn/showproblem.php?pid=2433 题意: 求删除任意一条边后,任意两点对的最短路之和 以每个点为根节点求一个最短路树, 只需要记录哪些边在最短路树上,记录整棵树的dis和 如果删除的边不在最短路树上,累加记录的dis和 否则,重新bfs求dis和 因为最短路树上有n-1条边,n棵树,所以只有(n-1)*n条边需要重新bfs 时间复杂度为n*n*m 求桥是 对面的low>自己的dfn,我求了一年假的桥 my god ! ლ(ٱ٥ٱლ) #…
 One day, Tom traveled to a country named BGM. BGM is a small country, but there are N (N <= 100) towns in it. Each town products one kind of food, the food will be transported to all the towns. In addition, the trucks will always take the shortest w…
题意: 给出一个图的所有边,每次从图中删除一条边,求任意点对的路径总和(求完了就将边给补回去).(有重边) 思路: #include <bits/stdc++.h> using namespace std; , INF=0x7f7f7f7f; int mapp[N][N]; bool vis[N]; //是否存在队列中 int dest[N]; vector<pair<int,int> > vect; int n, m; int num[N]; void spfa(in…
Problem Description       One day, Tom traveled to a country named BGM. BGM is a small country, but there are N (N <= 100) towns in it. Each town products one kind of food, the food will be transported to all the towns. In addition, the trucks will a…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3409 参考博客:http://www.cnblogs.com/woaishizhan/p/3189813.html #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<queue> #inclu…
题意: 给出n个点m条边的图,c次询问 求询问中两个点间的最短距离. 解析: Floyd会T,所以用到了最短路树..具体思想为: 设k为u和v的最近公共祖先 d[i] 为祖结点到i的最短距离  则dis[u][v] = d[u] + d[v] - 2*d[k] 用tarjan的lca求即可 把这题代码当作模板就好啦 #include <iostream> #include <cstdio> #include <sstream> #include <cstring&…
题目大意: 求图中两两点对最短距离之和 允许你删除一条边,让你最大化删除这个边之后的图中两两点对最短距离之和. 暴力:每次枚举删除哪条边,以每个点为源点做一次最短路,复杂度\(O(NM^2logN)\). 值得注意的是,\(Dijkstra\)的复杂度\(O(NlogN)\)是关于边而非点的. 这个复杂度对于\(n=100,m=1000\)的数据难以接受.我们考虑对每个点建出其最短路树.容易想到,只有删除到这个点的最短路树上的边时,才需要再做一次\(Dijkstra\).也就是说每个源点只需要做…
题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与元素之间可以互相转换:能量守恒……. 能量守恒……iPig 今天就在进行一个麻烦的测验.iPig 在之前的学习中已经知道了很多种元素,并学会了可以转化这些元素的魔法,每种魔法需要消耗 iPig 一定的能量.作为 PKU 的顶尖学猪,让 iPig 用最少的能量完成从一种元素转换到另一种元素……等等,i…
题目描述 给出一个N*M的网格图,有一些方格里面存在城市,其中首都位于网格图的左上角.你可以沿着网络的边界走,要求你走的路线是一个环并且所有城市都要被你走出来的环圈起来,即想从方格图的外面走到任意一个城市一定要和你走的路线相交.你沿着方格的边界走是需要费用的,不同的边界费用可能不同,求最小代价. 1<=N,M<=400,走过边界的代价为正整数且不超过10^9 输入 输出 样例输入 Input 1 3 3 1 0 0 1 0 0 0 0 1 1 4 9 4 1 6 6 6 1 2 2 9 1 1…
题目链接:路径和树 题意:给定无向带权连通图,求从u开始边权和最小的最短路树,输出最小边权和. 题解:构造出最短路树,把存留下来的边权全部加起来.(跑dijkstra的时候松弛加上$ < $变成$ <= $,因为之后跑到该顶点说明是传递下来的,该情况边权和最小.) 以样例作说明:第一次从顶点3跑到顶点1,最短路为2:第二次从顶点3经过顶点2跑到顶点1,最短路也为2,但是第二次跑的方式可以把从顶点3跑到顶点2的包括进去,这样形成的最短路树边权和最小. #include <queue>…