![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最短路
HumveeA6
这个作者很懒,什么都没留下…
展开
-
51Nod - 1459
很裸的最短路模板题,只要在更新路径时如果路径一样长更新一下权值就可以了。但是用spfa一定要注意如果路径一样长的时候也要把那个点再入队啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!#include<cstdio>#include<iostream>#include<vector>#include<algorithm>#inc...原创 2018-03-14 23:49:20 · 126 阅读 · 0 评论 -
2018 Spring Training 图论 合集
https://cn.vjudge.net/contest/229893#overview 题目链接 A.Uva 302 判断能不能走就是一个一笔画问题,(欧拉回路),因为题目要求是要回到原点,因此所有点的度都必须是偶数才能满足要求。操蛋的是输出路径的时候是要输出路径 编号并且要求输出路径编号字典序最小的路径。本蒟蒻没想到什么好办法,于是每个点拿了一个map存路径,第一个键值是路径的编号,...原创 2018-05-27 19:05:42 · 213 阅读 · 0 评论 -
洛谷P2761
题目标签写着网络流,但是好像跟网络流啥关系也没有哇qwq…. 关键要看出补丁可抽象为边,错误的各种情况是点,而且错误种类很少,所以可以用二进制状态压缩… 然后关键点就是位运算了....这个一定要想清楚...状态用stand表示,软件必须包含b1,那么就是stand&b1必须为b1,不能包含b2,那么就是b2&~stand必须等于b2,然后修复问题就是stand&a...原创 2018-04-06 10:40:54 · 207 阅读 · 0 评论 -
Educational Codeforces Round 40 D. Fight Against Traffic
题意大致就是给定一幅无向图,起点,终点,然后问在那些没有用一条路不经过其他点直接连通的点之间连新的路,并且新的路不应该改变起点到终点的最短距离,问这样的路有多少条; 朴素25%的算法,就是枚举所有的点对,然后如果两个点之间没有直接的路,就加一条然后跑最短路,与原距离比较。从第8个点开始就会tle…. 比较机智的算法就是,以s,t分别为起点跑一次最短路,然后枚举所有没有直接相连的两个点a,b,如...原创 2018-03-22 22:09:45 · 172 阅读 · 0 评论 -
Aizu 2200/AOJ2200
题目大意:快递到了:你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,你有一个当邮递员的好基友利腾桑遇到麻烦了:全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处。而且岛上只有一条船,下次想走水路还是得回到X处才行;两个镇子之间可能有两条以上的水路或旱路;邮递员必须按照清单上的镇子顺序送快递(镇子可能重复,并且对于重复的镇子不允许一次性处理,比如ABCB的话...原创 2018-03-06 08:54:29 · 448 阅读 · 0 评论 -
Aizu 2249
以dis为权值,求最短路,再开一个pre数组,pre[i]表示从首都到i城的最短路中,i城的上一座城市到i城的cost。最后将求出的最短路所有pre加起来就好了(为什么这样,画图可以考虑考虑,大概还是有道理的) 因为你始终还是要求首先满足最短路这个条件,之所以可以删去一些路,就是因为一些路有重复。如果用最小生成树的话这题似乎并不好弄。同时,i城到首都的最短路可能有多条,这时pre里面存的是多...原创 2018-03-05 23:34:23 · 386 阅读 · 0 评论 -
POJ3268
题目大意:给出n,m,代表牛数和边数,接着是m条有向边,代表从牛a到牛b需要花费c时间,现在所有牛要到牛x那里去参加聚会,并且所有牛参加聚会后还要回来,给你牛x,除了牛x之外的牛,他们都有一个参加聚会并且回来的最短时间,从这些最短时间里找出一个最大值输出 N<=1000,M<=100,000题目本身没啥难的,就是稍微要转化一下要想清楚,可以画个图很快就明白了; 每头牛返回的最短时...原创 2018-03-05 22:49:00 · 314 阅读 · 0 评论 -
(模板) Dijkstra算法(priority_queue优化)
写法1,利用struct存当前最近点的信息:#include<cstdio>#include<iostream>#include<vector>#include<algorithm>#include<cstring>#include<queue>using namespace std;struct edg...原创 2018-03-04 10:57:32 · 1326 阅读 · 0 评论 -
(模板)Floyd算法(多源最短路)
最最最需要注意的就是因为每次是拿一个点出来考虑能否把别的路变短,所以k一定是最外层循环。以及要记得初始化为无穷大或无穷小。 可以通过检查是否有dis[i][i]<0来判定是否有负环存在int dis[105][105]; memset(dis,0x7f,sizeof(dis)); for(i=1;i<=n;i++) for(j=1;j<=n;...原创 2018-03-04 10:10:13 · 342 阅读 · 0 评论 -
(模板)SPFA
比Dijkstra好写的算法,唯一的问题就是要小心…手残写错一个字母真的可能好久都看不出来 判断负环可以统计每个点的入队次数,如果有超过n-1次的就是有负环了。#include<cstdio>#include<iostream>#include<vector>#include<algorithm>#include<queue&...原创 2018-03-04 16:00:06 · 160 阅读 · 0 评论 -
51Nod - 1366
按理说是个模板题,一开始以为是差分约束然后搞了搞总是只能过去一部分点,不知道为啥==…. 然后发现其实floyd跑一遍就行了,数据范围小的可怜…. 最大差值就是最短路里面的最大值…. 卒….#include<cstdio>#include<iostream>#include<cstring>#include<string>#in...原创 2018-03-15 13:41:49 · 144 阅读 · 0 评论 -
洛谷P4009 汽车加油行驶问题
虽然写着网络流,但是似乎spfa跑最短路更好做一些。 需要注意的是如果某个地方有油站,那么是一定要加满油才能往后走的。 然后距离的记录以及边与平时的spfa有一些不同。 每个点如果有油,可以往4个方向转移。 别的就没有什么了。#include<cstdio>#include<iostream>#include<algorithm>#incl...原创 2018-05-31 21:15:08 · 480 阅读 · 0 评论