POJ-1724-ROADS
2017-02-06 20:37
274 查看
从 1 到 n 花费不超过 k 的最短路
#include<stdio.h> #include<algorithm> #include<iostream> #include<string.h> #include<stdlib.h> #include<queue> #include<vector> #include<math.h> #include<stack> using namespace std; const int MAX = 100+10; const double eps = 1e-10; const double PI = acos(-1.0); struct node { int v, l, w; }; int k, n, r; vector<node>graph[MAX]; void add(int u, int v, int l, int w) { node ver; ver.v = v; ver.l = l; ver.w = w; graph[u].push_back(ver); } bool operator < (node a, node b) { if(a.l!=b.l)return a.l>b.l; return a.w>b.w; } int solve() { priority_queue<node>que; node now; now.l = 0; now.w = 0; now.v = 1; que.push(now); while(!que.empty()) { now = que.top(); que.pop(); int u = now.v; if(u==n)break; for(int i = 0; i<(int)graph[u].size(); ++i) { node p = graph[u][i]; p.l+=now.l; p.w+=now.w; if(p.w<=k)que.push(p); } } if(now.v==n)return now.l; return -1; } int main() { int s, d, l, t; cin>>k>>n>>r; while(r--) { cin>>s>>d>>l>>t; add(s, d, l, t); } cout<<solve()<<endl; return 0; }
相关文章推荐
- 机器学习[0]_简单理解
- 如何理解里氏替换原则?
- ConstraintLayout教程
- Vue入门02-vue实现ToDoList
- CodeForces 763C. Timofey and remoduling
- Android N 通话界面_InCallActivity
- Truck History(卡车历史)
- [TPYBoard - Micropython之会python就能做硬件 4] 学习使用电位器和1602显示屏
- 巨婴国
- CTR预估中GBDT与LR融合方案
- Cocos2d-x开发--使用CCRenderTexture将矩形图片裁剪成圆形显示
- 柯洁4月对战阿尔法狗,请用正确姿势去颤抖
- MySQL数据库——插入记录的基本操作
- 接口测试实践
- 入门Python常用命令总结
- Vue入门01-vue初识
- sso以及cas
- 八皇后问题
- Servlet笔记7--HttpServletRequest介绍
- CSS控制布局的属性display、 column属性创建多列