
图论—最短路问题
四光年
算法无止境!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu2363 dijkstra+记忆化搜索
集中精力在圆锥的高上追求高度!题意:开始以为是求1到2的最短路的个数,其实不是。能够走得路径满足以下条件:当前的A点到2的最短路距离小于B到2的最短路的距离。这个时候可以从A到B。思路:我们直接从终点2开始,dijkstra记录下每一个点到终点的距离,然后记忆化搜索就行了。开始我是直接深搜的,然后就mle了。#include <bits/stdc++.h> us...原创 2018-12-22 13:56:26 · 225 阅读 · 0 评论 -
输出最短路字典序路径 floyed & dijkstra
以hdu1385为例子。http://acm.hdu.edu.cn/showproblem.php?pid=1385一:floyed+路径输出我们除了用dis[][]存储个点之间的距离之外,我们还需要用一个path[][]二维数组记录路径。开始看了网上有很多path记录的方法。用path[i][j]记录终点j的(其实实现不了) 用path[i][j]记录终点j的前一个结点(开始自己用...原创 2018-12-21 10:19:39 · 703 阅读 · 0 评论 -
hdu2363 枚举+最短路 好题
这道题目一开始我的思路就是错了,前前后后挣扎了n个小时。。。开始的想法是dijkstra,通过二分枚举高度差。但是发现一个问题,就是因为dijkstra里面优先选择的是短的路。我直接二分高度差,是有两个限制条件。然后就想到spfa,后来仔细想了想还是不行。。。最后用dfs了,才100个点嘛,感觉稳了,结果又tle。。。。。。。开了别人的题解一眼,恍然大悟。有两个限制条件(用于选择)的最短路怎么...原创 2018-12-26 18:32:46 · 199 阅读 · 0 评论 -
洛谷1113 AOV网
#include <bits/stdc++.h>using namespace std;#define res register int#define inf 0x3f3f3f3fconst int maxn=1e4+5;vector<int> v[maxn];int t[maxn],N,ru[maxn];int dis[maxn];struct N...原创 2018-12-09 21:24:33 · 180 阅读 · 0 评论 -
欧几里得生成树 附洛谷1265
你只有非常努力才能看起来毫不费力。https://www.luogu.org/problemnew/show/P1265上面的洛谷链接就是一个欧几里得生成树,注意这道题目里面的第二个条件是不成立的!!!一:什么是欧几里得生成树?(大概是这么个意思吧)就是给你n个包含x、y轴的坐标,将这些点连成最小生成树,如此生成树就是欧几里得生成树。我们的目的是记录最小生成树上的总的路径和。二...原创 2018-12-08 17:58:25 · 1814 阅读 · 0 评论 -
洛谷1522 牛的旅行 floyed
点少,标准的floyed。先用floyed更新出任意两点之间的最短距离。用并查集标记在同一牧场的的点。最后枚举两个不同牧场的点之间的距离len3,以及各自和自己牧场中最远的距离len1,len2.我们求的结果就是最小的(len1+len2+len3)。然后第七个点一直过不去。后来发现,少考虑了一种情况,就是可能两个原牧场中的某一个直径可能大于len1+len2+len3。。。。。。。。。。找...原创 2018-12-09 20:49:26 · 247 阅读 · 0 评论 -
洛谷1346 电车 floyed dijkstra
一:floyed(因为点比较少)#include <bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define res register intconst int maxn=105;int dp[maxn][maxn];int N,beg,end;void floyed(){ for(res k=...原创 2018-12-07 12:59:20 · 233 阅读 · 1 评论 -
洛谷1144 最短路的个数
方法一:这种发放适合于只求最短路的个数,不能用来输出最短路。我们直接在spfa的过程中使用cnt[]数组记录最短路的个数,用dijkstra也可以!更新cnt分情况: 如果dis[next]>dis[now]+1 那么之前到达点next的路>dis[now]+1cnt[next]=cnt[now] 如果dis[next]==dis[now]+1 那么之前到达点ne...原创 2018-12-09 20:50:05 · 277 阅读 · 0 评论 -
洛谷1119 灾后重建 很棒的floyed
一看图上的点不多,嗯,一定是floyed。然后采用询问一次就走一遍floyed函数的做法,交上去tle。。。后来看了大佬的代码,真的对floyed理解的更加的深刻了,将的真的很棒,后来自己遇到了问题,大佬也帮忙解答了。https://www.luogu.org/blog/Time-Rune/solution-p1119这个算法的主要思路,就是通过其他的点进行中转来求的两点之间的最短路。因为...原创 2018-12-08 19:48:11 · 184 阅读 · 0 评论 -
洛谷1330 染色
https://www.luogu.org/problemnew/show/P1330 这就是刷专题不好的地方,挺好的一道题目,我还没看题就知道是染色问题。。。。注意:图可能不是连通的 图有环//很坑的一道题目,没有说序号是从小到大的 #include <bits/stdc++.h>using namespace std;const int maxn=1e5+5...原创 2018-11-28 19:20:44 · 300 阅读 · 0 评论 -
洛谷3916 图的遍历 反向建图
https://www.luogu.org/problemnew/show/P3916一:刚学图,考虑到了可能是不连通图的情况,进行了处理,但还是出了问题。直接正向dfs错误代码如下,当然这样做也可以,因为我看有人居然对每一个点都dfs。。。还没超时。//直接正向dfs的错误代码!!!#include <bits/stdc++.h>using namespace st...原创 2018-11-28 19:18:33 · 395 阅读 · 0 评论 -
洛谷 1462 看这个问法就是枚举!!!
大神总结的思路果然不一样,可以好好看看挑战,求最大值的最小值,就是二分!!!那剩下的就很简单了,直接每次dijkstra就行了。二分最后我有时候懒得判断,就把l-1页判断一次。。。也是个好方法#include <bits/stdc++.h>using namespace std;#define res register int #define ll long lon...原创 2018-12-24 22:33:59 · 216 阅读 · 0 评论