最短路
文章平均质量分 78
xutian_curry
这个作者很懒,什么都没留下…
展开
-
有权图的单源最短路算法(傻瓜版disktsra)
每次找最短路径的方法是直接扫描思想是每次从未被收录的点中找到距源点最近的点收录进去,然后去更新与新收录点的临界点与源点的最短距离。测试样例#include<stdio.h> #include<stdlib.h> #include <string.h> #include <string> #include <iostream> #inclu...原创 2018-04-15 11:26:36 · 272 阅读 · 0 评论 -
poj 2253 frogger
有两只青蛙和若干块石头,现在已知这些东西的坐标,两只青蛙A坐标和青蛙B坐标是第一个和第二个坐标,现在A青蛙想要到B青蛙那里去,并且A青蛙可以借助任意石头的跳跃,而从A到B有若干通路,问从A到B的所有通路上的最大边,比如有 有两条通路 1(4)5 (3)2 代表1到5之间的边为4, 5到2之间的边为3,那么该条通路跳跃范围(两块石头之间的最大距离)为 4, 另一条通路 1(6) 4(1) 2...原创 2018-05-07 19:46:29 · 123 阅读 · 0 评论 -
poj 1122 FDNY to the Rescue!
反向存图 dijstra 记录路径奇怪的输入输出输入:用字符串存最后一行输出:\t 来水平制表#include <iostream> #include <memory.h> #include <string> #include <stdio.h> #include <algorithm> #define IN (1<<28) ...原创 2018-05-07 19:08:15 · 113 阅读 · 0 评论 -
hdu 1385 Minimum Transport Cost 打印路径 + 路径字典序最小
//除了边的权值之外每个点还附带一个权值,所以在松弛操作的时候要把点的权值也计算进去//另外在总费用最小的情况下要输出字典序最小的路径,同样是在松弛操作那里处理//如果能更新d[i]使d[i]变小则直接更新//如果是与d[i]相同则判断一下如果更新的话会不会使路径的字典序更小,如果能才更新否则不更新;这一点和记录花费那很像#include <iostream> #include <...原创 2018-05-06 17:07:03 · 115 阅读 · 0 评论 -
最短路 poj 1125 Stockbroker Grapevine
英文水平该提高了,开始死活读不懂啥意思附上翻译众所周知,证券经纪业依靠的就是过度的传言。您需要想出股票经纪人中传播假情报的方法, 让您的雇主在股票市场的占据优势。为了获得最大的效果,你必须蔓延最快的方式谣言。不 幸的是你,股票经纪人信息只信任他们的“可靠来源”,这意味着你在你传播谣言之前必须考 虑到他们的接触结构。它需要特定股票经纪人和一定的时间把谣言传递给他的每一位同事。 你的任务将是写一个...原创 2018-05-06 15:06:14 · 132 阅读 · 0 评论 -
hdu 3790 最短路径问题 需要记录花费的最短路
创建一个cost[ ]来记录花费即可#include <iostream> #include <memory.h> #include <stdio.h> using namespace std; #define Max_V 1005 const int IN = (1<<28); int G[1005][1005]; int C[1005][100...原创 2018-05-06 14:34:34 · 180 阅读 · 0 评论 -
最短路的变形 一个人的旅行 hdu2066
草儿家编号为0,与相邻的城市车程设为0,一次dij即可#include <iostream> #include <memory.h> using namespace std; #define Max_V 1005 const int IN = (1<<28); int T,S,D; int G[Max_V+1][Max_V+1]; int des[Max_V+...原创 2018-05-06 12:32:26 · 111 阅读 · 0 评论 -
hdoj 畅通工程 没有最短路的情况
#include <iostream> #include <memory.h> using namespace std; const int IN = (1<<28); int N,M,S,T; int G[205][205]; int dist[205]; int visited[205]; void dij() { for( int i = 1; i...原创 2018-05-06 11:31:16 · 102 阅读 · 0 评论 -
floyd poj 3660 Cow Contest
确定排名顺序问题dfs : 以每个顶点正向和反向(反向存图)分别遍历一次,就可以求出该顶点的出度和如度之和。满足 D入 + D出 == N-1,就可以确定其排名。参见离散数学。floyd : relation[i][j] = 1 或者 relation[j][i] = 1 表示 i,j 之间有关系。若某一个顶点与其余 n-1个顶点都有关系的话,其排名是确定的。求任意两个顶点之间是否有关系可以用fl...原创 2018-05-05 10:21:50 · 125 阅读 · 0 评论 -
最短路 Silver Cow Party
有向图,求往返路径,方法是正向和反向存两次邻接矩阵,用两次dij#include <iostream> #include <memory.h> #define IN (1<<28) using namespace std; int G1[1005][1005],G2[1005][1005]; int N,M,X; int dist1[1005]; int vi...原创 2018-05-05 09:35:45 · 144 阅读 · 0 评论 -
最短路SPFA算法(解决负权边)
算法思想:实现方法: 建立一个队列,初始时队列里只有起始点,再建立一个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极大值,该点到他本身的路径赋为0)。然后执行松弛操作,用队列里有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加入到队列最后。重复执行直到队列为空。第一种用邻接表实现#include <iostream> #include <...原创 2018-05-04 20:50:52 · 1062 阅读 · 0 评论 -
最短路
单源最短路dij#include <iostream> #include <memory.h> #include <bits/stdc++.h> using namespace std; const int IN = (1<<28); int N,M,S,T; int G[1005][1005]; int dist[1005]; int visite...原创 2018-05-04 19:52:59 · 121 阅读 · 0 评论 -
最短路 兔子与樱花
注意邻接矩阵和路径矩阵的初始化递归地打印路径#include <iostream> #include <memory.h> #include <bits/stdc++.h> const int IN = (1<<28); using namespace std; int N,E,kase; map <string, int > m1; m...原创 2018-05-04 17:12:37 · 491 阅读 · 0 评论 -
图之多源最短路 哈利波特的考试
floyd算法#include<stdio.h> #include<stdlib.h> #include <string.h> #include <string> #include <iostream> #include <stack> #include <math.h> #include <algo原创 2018-04-11 21:09:53 · 262 阅读 · 0 评论 -
多源最短路算法之floyd
#include<iostream> #include <stdio.h> #include <memory.h> #include <queue> using namespace std; const int IN = 1000000 ; int G[105][105]; int path[105][105]; int N,M; int print...原创 2018-04-15 20:30:42 · 154 阅读 · 0 评论 -
有权图的单源最短路算法 优先级队列优化dij
思想是:将未被收录的点放入一个优先级队列当中,每次队首元素就是这次要收录的点测试样例#include <iostream> #include <queue> #include <stdio.h> #include <vector> using namespace std; struct node { int num,dis; node...原创 2018-04-15 12:17:45 · 229 阅读 · 0 评论 -
poj 1797 Heavy Transportation
题意:一条通路上的承重定义为这条通路上经过的所有路径承重的最小值,要去求从1到N的所有通路中的最大承重dijstra 每次收录最大承重的点 更新条件为、dist[i] = max( dist[i], min( Max, G[MaxV][i] ) );#include <iostream> #include <memory.h> #include <string>...原创 2018-05-07 20:47:51 · 140 阅读 · 0 评论