最短路
文章平均质量分 60
xiaozhuaixifu
这个作者很懒,什么都没留下…
展开
-
HDOJ/HDU---1874 畅通工程续 最短路(dijkstra)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 这个题有一个小小的tricky,就是要考虑重边的情况,如果遇到重复的边,则直接取最小的边。 Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优原创 2013-07-03 13:38:27 · 1391 阅读 · 0 评论 -
HDOJ/HDU 2544 最短路---dijkstra算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 这题的思路可以见这里(同一类型):http://blog.csdn.net/xiaozhuaixifu/article/details/9232921 #include using namespace std; const int maxn=101; const int intmax=999原创 2013-07-04 12:10:16 · 1053 阅读 · 0 评论 -
Bellman-Ford 算法 单源最短路径问题
当给定的图是一个DAG,且存在 负边的时候,Dijkstra算法是不能用的,这时,只要图中不存在负圈,我们采用此算法能得出源点到每一个点的最短距离: #include #include #include using namespace std; const int INF=999999; const int maxn=100+10; struct edge{ int from,to,cost;原创 2013-08-07 22:51:16 · 1263 阅读 · 0 评论 -
任意两点间的最短路径---floyd_warshall算法
使用DP的思想:考虑从i到j的最短路径经过K一次和完全不经过K两种情况来讨论: DP[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]) #include #include #include using namespace std; const int maxv=100; const int INF=999999; int weight[maxv][maxv]; int原创 2013-08-08 14:30:32 · 1038 阅读 · 0 评论 -
单源最短路径---Dijkstra 算法--路径还原
#include #include #include #include #include using namespace std; const int maxn=100; const int INF=999999; int pre[maxn]; bool visited[maxn]; int d[maxn],cost[maxn][maxn],n,m; //n vertexs,1,2,..原创 2013-08-09 13:27:24 · 1321 阅读 · 0 评论 -
poj 2139 Six Degrees of Cowvin Bacon (Floyd 算法)
题:http://poj.org/problem?id=2139 任意两点之间的最短路径问题: #include #include using namespace std; const int MAXN=301; const int INF=99999; int d[MAXN][MAXN],dis[MAXN],N,M; void solve() { int ans=INF; for(i原创 2013-09-13 21:10:09 · 1500 阅读 · 0 评论 -
poj 3259 Wormholes (判断图是否存在负圈)
题目:http://poj.org/problem?id=3259 思路:根据BELLMAN-FORD算法,如果图中不存在从s可达的负圈,那么最短路不过经过同一个顶点两次,也就是说最多经过V-1条边, 如果存在负圈,那么这个循环更新次数会在第n次也会更新,实际上会无限更新,越来越小,所以一开始对所以点i,都把d[i]初始化为0,那么可以检查 出所有的负圈: #include #incl原创 2013-09-13 22:29:54 · 1843 阅读 · 0 评论