道路
来源:互联网 发布:如何提高淘宝权重 编辑:程序博客网 时间:2024/04/28 23:36
道路
- 查看
- 提交
- 统计
- 提问
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
N个以 1 ... N 标号的城市通过单向的道路相连:。每条道路包含两个参数:道路的长度和需要为该路付的通行费(以金币的数目来表示)
Bob and Alice 过去住在城市 1.在注意到Alice在他们过去喜欢玩的纸牌游戏中作弊后,Bob和她分手了,并且决定搬到城市N。他希望能够尽可能快的到那,但是他囊中羞涩。我们希望能够帮助Bob找到从1到N最短的路径,前提是他能够付的起通行费。
- 输入
- 第一行包含一个整数K, 0 <= K <= 10000, 代表Bob能够在他路上花费的最大的金币数。第二行包含整数N, 2 <= N <= 100, 指城市的数目。第三行包含整数R, 1 <= R <= 10000, 指路的数目.
接下来的R行,每行具体指定几个整数S, D, L 和 T来说明关于道路的一些情况,这些整数之间通过空格间隔:
S is 道路起始城市, 1 <= S <= N
D is 道路终点城市, 1 <= D <= N
L is 道路长度, 1 <= L <= 100
T is 通行费 (以金币数量形式度量), 0 <= T <=100
注意不同的道路可能有相同的起点和终点。 - 输出
- 输入结果应该只包括一行,即从城市1到城市N所需要的最小的路径长度(花费不能超过K个金币)。如果这样的路径不存在,结果应该输出-1。
- 样例输入
5671 2 2 32 4 3 33 4 2 41 3 4 14 6 2 13 5 2 05 4 3 2
- 样例输出
11
#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#include<iomanip>#include<queue>#include<stack>#include<vector>#include<set>#include<map>using namespace std;struct edge{int s,t,w,c,n;}E[10005];int Next[105];int dp[10005][105];void dfs(int c,int cur){if(dp[c][cur]!=-1)return;dp[c][cur]=0x7fffffff/2;for(int i=Next[cur];i!=-1;i=E[i].n){if(c<E[i].c)continue;dfs(c-E[i].c,E[i].s);if(dp[c][cur]>dp[c-E[i].c][E[i].s]+E[i].w)dp[c][cur]=dp[c-E[i].c][E[i].s]+E[i].w;}}int main(){int Cost,n,m;memset(Next,0xff,sizeof(Next));memset(dp,0xff,sizeof(dp));cin>>Cost>>n>>m;for(int i=0;i<m;++i){cin>>E[i].s>>E[i].t>>E[i].w>>E[i].c;E[i].n=Next[E[i].t];Next[E[i].t]=i;}for(int i=0;i<=Cost;++i)dp[i][1]=0;int ans=0x7fffffff/2;for(int i=0;i<=Cost;++i){dfs(i,n);if(dp[i][n]<ans)ans=dp[i][n];} if(ans==0x7fffffff/2) cout<<"-1"<<endl;else cout<<ans<<endl;return 0;}
阅读全文
0 0
- 道路
- 道路
- 道路
- 硬件道路: 软件道路:
- 成功道路
- 人生道路!!!
- 道路重建
- 道路网络
- 道路安全
- 道路自动识别
- 道路识别
- 道路修建
- 道路识别
- 道路修建
- 道路规划
- xjoj道路
- 程序员道路
- 重建道路
- HTML5 与 HTML4 的区别(2)
- oracle中扩充number类型
- 异步FIFO初学
- ROS+Gmapping+镭神智能激光雷达应用测试(N301-01B)
- [iOS] 写在前面
- 道路
- SpringMVC视图、表单
- Arnold渲染果冻效应Rolling shutter
- ACM 在有向无环图中求最长路径
- ubuntu 16.04.2 中安装eclipse
- vue饿了么学习-第十篇(header样式)
- 1564L:棋子正方行2
- 浅析多线程的对象锁和Class锁
- hash表(转侵删)