深度优先搜索1-寻路问题(算法基础 第6周)
来源:互联网 发布:淘宝代运营怎么样 编辑:程序博客网 时间:2024/05/29 07:34
讲解
源码
#include <iostream>#include <vector>#include <cstring>using namespace std;int K,N,R,S,D,L,T;struct Road { int d,L,t;};vector<vector<Road> > cityMap(110); //邻接表。cityMap[i]是从点i有路连到的城市集合int minLen = 1<<30; //当前找到的最优路径的长度int totalLen; //正在走的路径的长度int totalCost; //正在走的路径的花销int visited[110]; //城市是否已经走过的标记int minL[110][10100]; //minL[i][j]表示从1到i点的,花销为j的最短路的长度void dfs(int s) //从s开始向N行走{ if (s==N) { minLen = min(minLen, totalLen); return ; } for(int i=0; i<cityMap[s].size(); i++) { int d = cityMap[s][i].d; //s有路连到d if (!visited[d]) { int cost = totalCost + cityMap[s][i].t; if (cost > K) continue; if (totalLen + cityMap[s][i].L >= minLen || totalLen + cityMap[s][i].L >= minL[d][cost]) continue; totalLen += cityMap[s][i].L; totalCost += cityMap[s][i].t; minL[d][cost] = totalLen; visited[d] = 1; dfs(d); visited[d] = 0; totalCost -= cityMap[s][i].t; totalLen -= cityMap[s][i].L; } }}int main() { cin >> K >> N >> R; for(int i=0; i<R; i++) { int s; Road r; cin >> s >> r.d >> r.L >> r.t; if (s!=r.d) { cityMap[s].push_back(r); } } for (int i=0; i<110; i++) for (int j=0; j<10100; j++) minL[i][j] = 1<<30; memset(visited, 0, sizeof(visited)); totalLen = 0; totalCost = 0; visited[1] = 1; minLen = 1<<30; dfs(1); if(minLen < (1<<30)) cout << minLen << endl; else cout << "-1" << endl; return 0;}
0 0
- 深度优先搜索1-寻路问题(算法基础 第6周)
- 深度优先搜索1-城堡问题(算法基础 第6周)
- 深度优先搜索1-棋盘问题(算法基础 第6周)
- 深度优先搜索1-A Knight's Journey(算法基础 第6周)
- 深度优先搜索--算法(寻路问题 poj724)
- 深度优先搜索2-Sudoku(算法基础 第7周)
- 深度优先搜索2-Shredding Company(算法基础 第7周)
- 广度优先搜索-迷宫问题(算法基础 第8周)
- 图的基础算法-广度优先搜索/深度优先搜索
- 基础算法(四)---深度优先搜索(DFS)
- dfs(深度优先算法)搜索基础
- 算法:堆栈与深度优先搜索(迷宫问题)
- 算法:堆栈与深度优先搜索(迷宫问题)
- 深度优先搜索算法(迷宫最短路径问题)
- 深度优先搜索--算法(城堡问题 poj1164)
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索算法
- enableEventValidation是干什么的?
- 用 PHP 读取文件的正确方法
- OC中一些容易混淆和忘记的知识点总结
- 有趣的机器学习:最简明入门指南
- DeDE 后台登陆广告
- 深度优先搜索1-寻路问题(算法基础 第6周)
- Mina框架研究(2)
- JavaScript宏观总结
- 创建型模式——建造者模式
- Android WebView加载空白
- opencv 图像叠加ROI & 图像混合
- 关于数据库灾备的重要性
- CSS的定位即position属性的值有4种:static,relative,absolute,fixed
- MFC 简单绘制直角坐标系