![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 55
超级码力奥
这个作者很懒,什么都没留下…
展开
-
单源最短路:昂贵的聘礼 虚拟源点 有长度限制
原题链接:https://www.acwing.com/problem/content/905/ 考察点:超级源点,有长度限制的最短路 相似题意: 某天超市搞活动,小明想买一个自己一直想买的电脑,平时需要7000,小明觉得太贵了。但活动当天,超市里的商品可以通过买其他商品获得优惠券。例如买一个键盘然后买电脑只需要5000,如果买一个鼠标买电脑只需要4000。同理,买其他商品也有这样的优惠活动。但商场出于某种目的,给每一件商品都标了等级,如果买了低于某个等级的商品,就不能够再买某些高级商品。 为了方便,商店原创 2022-03-16 12:19:23 · 89 阅读 · 0 评论 -
单源最短路:最优乘车
题意抽象:每条公交线路是单向的。从起点出发,到终点,最少需要换成多少次。 思路:如果目的是换乘次数最少。那么其实在一条公交路线上,从起点到任何一个点的权重都是一样的。然后建图其实是最复杂的。前边的点,都需要指向后边的点,权重都还是一样。 最终的换乘次数就是起点到终点的距离-1. 如果不需要换乘,那么结果就是0。 #include<iostream> #include<cstring> #include<algorithm> #include<sstream>.原创 2022-03-16 12:16:15 · 182 阅读 · 0 评论 -
单源最短路:Dijsktra,堆优化,Bellman-ford,SPFA
图论之单源最短路 0x3f 0x3f3f3f3f 的区别? memset 按字节赋值,所以memset 0x3f 就等价与赋值为0x3f3f3f3f, 1. Dijkstra int g[N][N]; //为稠密阵所以用邻接矩阵存储 int dist[N]; //用于记录每一个点距离第一个点的距离 bool st[N]; //用于记录该点的最短距离是否已经确定 int Dijkstra() { memset(dist, 0x3f,sizeof dist); //初始化原创 2022-03-16 12:10:21 · 421 阅读 · 0 评论 -
欧拉路径:骑马修栅栏
原题链接: https://www.acwing.com/problem/content/1126/ 就是说,一个图,无向图。有可能存在重边。 dfs为何使用那种顺序? 这个解释太棒了: 至于为什么最后才把这个点加到序列中,有以下的解释: 就是说存在一种可能,如果先加点,有可能dfs会直达终点,然后旁边的环还没有遍历。 所以说,我们需要先遍历当前点所有的相邻的点,然后最后把这个点加进去,然后逆序倒着输出。 然后题目中还要求,输出字典序最小的路经。下边这个解释也很棒。 代码: /* 每两个点之原创 2022-03-14 19:47:45 · 272 阅读 · 0 评论