Graph Theory - 最短路
文章平均质量分 69
Masamiiiii
这个作者很懒,什么都没留下…
展开
-
hdu 2263 Heavy Cargo Floyd(求最大容量)
点击打开链接//dp(k)[i][j] 从i->j(中间结点最大编号不大于k)时最大容量//容量(i->j路径中的最小边) //题意:求i->j的最大容量 (i->j路径中的最小边最大的那一个)// dp(k)[i][j]=max(dp(k-1)[i][j],min(dp(k-1)[i][k],dp(k-1)[k][j]])#include #include #incl原创 2016-12-14 22:20:36 · 370 阅读 · 0 评论 -
Codeforces 296D Greg And Graph (逆向处理)Floyd
点击打开链接题意:n个点的有向带权完全图,第i次删除一个点及其所有的边,n ? 逆着考虑:相当于每次添加一个结点后,在更新最短路径.O(n^3)对第m个新加入的点x,n^2更新x(出发/结尾)时中间点编号为后m+1个的d^(m+1)值 在n^2更更新中间点为x时的d^m值即可.#include using namespace std;typedef long lo原创 2017-07-06 20:02:32 · 384 阅读 · 0 评论 -
Codeforces 821D Okabe And City 最短路
点击打开链接题意:n*m地图,有k个位置是点亮的,有4个移动方向,每次可以移动到相邻的点亮位置,每次站在初始被点亮某个位置,暂时使某行或该某列全部点亮,花费为1,下一次使用时,上一次暂时点亮被熄灭.问从(1,1)->(n,m)的最小花费,n,m,k以k个lit为顶点建图,若lit相邻 则边权为0,如果横/纵坐标差k#include using namespace st原创 2017-06-26 17:48:52 · 1680 阅读 · 6 评论 -
Codeforces 400D Dima And Bacteria 暴力+Floyd
题意:n点,m条带权边的无向图,每个顶点属于k类中的某一类,定义合法,同一类中的任意两点存在代价为0的路径,若合法,求出d[i][j]矩阵,表示第i类到第j类的最小代价.n,m同一个类有c[i]个点 则要有c[i]*(c[i]-1)/2条权值为0的路径.相同type转化时,不会经过非0边首先把边权为0两个端点扔到同一个联通分量中,算出该联通分量中每个type的个数,更新该typ原创 2017-07-11 10:59:08 · 342 阅读 · 0 评论 -
Atcoder ABC 061D Score Attack 最长路+判环
点击打开链接题意:n点,m边的有向带权图,问从1出发到n的最大值为?,若可以无穷大 则输出infn,m求最长路-> 把带权的边变号,等价于求出最短路并判断是否有负环即可注意该图为有向图,n不一定在负环上,所以用bellmanford求出环上的点 或者 暴力:如果第n-1次的d[n] 不等于 第2*n次的d[n]则一定存在环 #include using namespace st原创 2017-05-16 14:38:18 · 500 阅读 · 0 评论 -
POJ 1201 Intervals 差分约束系统
点击打开链接题意:给出n个线段[ai,bi] n=ci 首先设S[i]表示 集合Z中小于等于i的元素个数 则条件可以转换为 S[bi]-S[ai-1]>=ci条件转化为S[ai-1]-S[bi]若答案为M,则S[mx]-S[mn-1]>=M -> S[mn-1]#include #include #include #include using namespac原创 2017-02-17 16:51:06 · 281 阅读 · 0 评论 -
ABC 051D Candidates of No Shortest Paths 最短路(Floyd)
点击打开链接题意:n个点m条边,求不在任意两点最短路径上的边个数 n边(i,j) 在(s->t)的最短路径上的充要条件为 dist[s][i]+w[i][j]+dist[j][t]=dist[s][t]; 等式1 暴力枚举:边和s,t复杂度为O(m*n*n)因为此时 边(i,j)在s->t上 所以顶点j为s->t的中间结点 dist[s][t]=dist[s][j]+dist[j]原创 2017-01-09 14:11:18 · 549 阅读 · 0 评论 -
poj 2570 Fiber Network Floyd思想+二进制处理
点击打开链接题意:某条道路由一些公司修建,修建道路的公司可以提供这条路上的连通,询问哪些公司可以提供从A到B的路径.每个公司由一个小写字母表示。Floyd的递推式可以有若干种变形:加法,min,max,与和或运算等等//d(k)[i][j]:提供i->j连接&&中间点序号不大于k时 = 提供i-j连接&&中间节点序号j连接&&中间节点序号为k(即提供i->k&&提供k->j连接的公原创 2016-12-06 19:46:30 · 276 阅读 · 0 评论 -
poj 1125 Stockbroker Grapevine Floyd(基础题)
点击打开链接d(k)[i][j]:i->j中间点序号不大于k时 =min(i-j中间节点序号小于k,i->j中间节点序号为k) d(k)[i][j]=min(d(k-1)[i][j],d(k-1)[i][k]+d(k-1)[k][j]))#include #include #include #include #include #include using names原创 2016-12-06 19:35:03 · 269 阅读 · 0 评论 -
poj 2387 bellman-ford裸题
点击打开链接d(k)[i]:源点到i最多经过k条边时的最小值 d(k)[i]=min(d(k-1)[i],d(k-1)[j]+w(j,i))无负圈,则最短路最多经过n-1条边 #include #include #include #include using namespace std;typedef long long ll;const int N=1e3+20;原创 2016-12-04 19:55:40 · 503 阅读 · 0 评论 -
ZOJ 2750 Idiomatic Phrases Game 最短路(dijkstra)
点击打开链接按照题意建图,跑个最短路即可#include #include #include #include #include #include using namespace std;typedef pair ii;typedef long long ll;const ll inf=1e8;const int N=1e3+20;int n;struct node原创 2016-12-06 15:35:47 · 330 阅读 · 0 评论 -
poj 1511 Invitation Cards 最短路SPFA(模板题)
点击打开链接SPFA:动态逼近法定理:只要最短路径存在,上述SPFA算法必定能求出最小值。证明:每次将点放入队尾,都是经过松弛操作达到的。换言之,每次的优化将会有某个点v的最短路径估计值d[v]变小。所以算法的执行会使d越来越小。由于我们假定图中不存在负权回路,所以每个结点都有最短路径值。因此,算法不会无限执行下去,随着d值的逐渐变小,直到到达最短路径值时,算法结束,这时的最短路径估计原创 2016-12-06 17:07:58 · 398 阅读 · 0 评论 -
ARC 061E すぬけ君の地下鉄旅行 最短路(拆点)
题意:n点m条边的线路,每条边有编号c[i],一条路径的代价为:第一条边代价1+该路径上相邻边编号不同的对数.n,m=2e5,c[i]n的最短路?拆点:原图中u-v 编号为c,则在新图中建立u-(u,c)边权值为1,表示换线,同时(u,c)-(v,c)边权值为0则新图中相邻同一条线路花费为0,换一次线总共花费为2,跑最短路ans/2即可.#include using原创 2017-07-17 12:25:56 · 1136 阅读 · 0 评论