题目链接:思路:STL果然不是万能的。。写了一个下午。。。 改用普通数组写一会便过了。。真坑。。 主要就是建立一个保存前驱的数组代码: #include #include #include using namespace std; int a[6][6];...
分类:
其他好文 时间:
2014-09-21 18:54:21
阅读次数:
231
中文题,题意就不多说了,讲讲思路吧,先根据题意构图,与普通最短路不同的是这一题加了一个Rank,每个点都有一个Rank,题目要求最短路径上的点的Rank的最大差值在
M范围内,Dijkstra判断条件时加上Rank约束就行了。我没有添加汇点直接写的,另贴上别人添加汇点的写法。
我的代码:
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2014-09-21 12:46:40
阅读次数:
252
Floyd算法可以求图内任意两点之间的最短路径,三重循环搞定,虽然暴力,但是属于算法当中最难的动态规划的一种,很有必要理解。花了一晚上和半个下午专门看这个,才看个一知半解,智商被碾压没办法。我一直怀疑这种办法会不会漏情况,是不是一定正确,脑子里想特殊用例,却把脑子想乱了。收藏这么几个网址,从数学证明...
分类:
其他好文 时间:
2014-09-19 17:23:05
阅读次数:
328
题目大意:一个有N个点m条边的无向图,可以将路径上k条边的权值变为0,试求此时1-n的最短路径长度。
Sol:我们考虑分层图思想,将图复制k+1份,分别是0~k层,表示此时已经经过的“免费边”条数。
层与层之间的边权值为0且为单向由上层指向下层。
这样我们以0层的1点做单源最短路径。每一层的n点的距离最小值即为答案。
只不过这样的点数为O(K*N),边数为O(K*M),比较慢。
...
分类:
其他好文 时间:
2014-09-19 15:42:55
阅读次数:
223
题目大意: 在一个有向图中,求经过所有的点的圈的最短路径。 思路: 把i点拆为i和i+n两个点,源点S(2*n+1)连向i, 容量为1,边权为0。i+n连向汇点E(2*n+2),容量为1,边权为0。对于输入的边a,b,w,建立a->b+n的边,容量为1,边权为w。 然后就是用模版...
分类:
其他好文 时间:
2014-09-18 22:05:34
阅读次数:
209
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1157题目描述小鼠a与小鼠b身处一个m×n的迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中...
分类:
其他好文 时间:
2014-09-17 21:39:42
阅读次数:
275
【问题描述】
X城有一个含有N个节点的通信网络,在通信中,我们往往关心信息从一个节点I传输到节点J的最短路径。遗憾的是,由于种种原因,线路中总有一些节点会出故障,因此在传输中要避开故障节点。
任务一:在己知故障节点的情况下,求避开这些故障节点,从节点I到节点J的最短路径S0。
任务二:在不考虑故障节点的情况下,求从节点I到节点J的最短路径S1、第二最短路径S2。
【输入文件...
分类:
其他好文 时间:
2014-09-17 12:07:02
阅读次数:
373
说说:
其实这道题就是一道广度优先遍历求最短路径的简单题目。但是可能今晚状态不太好,开始一直想当然地就按深度优先遍历去写了。然后测试数据又刚好能通过,结果就特别地纠结。不过总的来说,这道题是非常简单的。至于代码的话,后来写得烦起来了,可能看起来有点凌乱QAQ
源代码:
#include
#include
#define MAX 30+5
typedef struct{
int x;...
分类:
其他好文 时间:
2014-09-14 22:12:57
阅读次数:
358
Floyd-Warshall算法(Floyd-Warshall
algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。
通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。
从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又...
分类:
其他好文 时间:
2014-09-12 13:31:46
阅读次数:
332
利用栈求解迷宫问题
源代码:
#include
#include
#define M 8
#define N 8
#define MaxSize M*N
typedef struct
{
int i;//当前方块的行号
int j;//当前方块的列号
int di; //di是下一个可走的相邻方块的方位号 ...
分类:
其他好文 时间:
2014-09-11 17:15:42
阅读次数:
217