726:ROADS

总时间限制:
1000ms
内存限制:
65536kB
描述
N cities named with numbers 1 ... N are connected with one-way roads. Each road has two parameters associated with it : the road length and the toll that needs to be paid for the road (expressed in the number of coins).
Bob and
Alice used to live in the city 1. After noticing that Alice was cheating in the
card game they liked to play, Bob broke up with her and decided to move away -
to the city N. He wants to get there as quickly as possible, but he is short on
cash.

We want to help Bob to find the shortest path from the city
1 to the city N that he can afford with the amount of money he has.

输入
The first line of the input contains the integer K,
0 <= K <= 10000, maximum number of coins that Bob can spend on his way.

The second line contains the integer N, 2 <= N <= 100, the total
number of cities.

The third line contains the integer R, 1 <= R <=
10000, the total number of roads.

Each of the following R lines
describes one road by specifying integers S, D, L and T separated by single
blank characters :

  • S is the source city, 1 <= S <= N
  • D is the destination city, 1 <= D <= N
  • L is the road length, 1 <= L <= 100
  • T is the toll (expressed in the number of coins), 0 <= T
    <=100

Notice that different roads may have the same source and
destination cities.

输出
The first and the only line of the output should contain the total length of
the shortest path from the city 1 to the city N whose total toll is less than or
equal K coins.
If such path does not exist, only number -1 should be written
to the output.
样例输入
5
6
7
1 2 2 3
2 4 3 3
3 4 2 4
1 3 4 1
4 6 2 1
3 5 2 0
5 4 3 2
样例输出
    11
题目大意:
n个点,m条边,每条边有长度和费用,需要求出1到n的在费用不大于k的情况下的最短路径,如果没有输出-1
这道题dijsktra算法即可,并且不能记录dis数组,直接在第一次到达n时即为ans;
如果记录dis可能会出现花费不足以到达终点但是总长度较短,导致输出-1。
#include<cstdio>
#include<queue>
using namespace std;
struct X
{
int v,q,j,n,f;
bool operator<(const X &a)const
{
if(q==a.q) return j>a.j;
return q>a.q;
}//重载运算符
}x[];
priority_queue<X>qq;//调用系统堆
int main()
{
int k,n,m;
scanf("%d%d%d",&k,&n,&m);
for(int i=;i<=m;i++)
{
int u;
scanf("%d%d%d%d",&u,&x[i].v,&x[i].q,&x[i].j);
x[i].n=x[u].f;
x[u].f=i;
}
qq.push((X){,,,,});//载入初始节点
while(!qq.empty())
{
X t=qq.top();qq.pop();
if(t.v==n)
{
printf("%d",t.q);//到达n即为最优解
return ;
}
for(int i=x[t.v].f;i;i=x[i].n)
if(t.j+x[i].j<=k) qq.push((X){x[i].v,x[i].q+t.q,x[i].j+t.j,,});
}
printf("-1");
return ;
}

openjudge ROADS的更多相关文章

  1. #图# #dijkstra# ----- OpenJudge 726:ROADS

    OpenJudge 726:ROADS 总时间限制: 1000ms内存限制: 65536kB 描述 N cities named with numbers 1 ... N are connected ...

  2. OpenJudge/Poj 1251 丛林中的路/Jungle Roads

    1.链接地址: http://bailian.openjudge.cn/practice/1251/ http://poj.org/problem?id=1251 2.题目: 总时间限制: 1000m ...

  3. poj 1251 Jungle Roads (最小生成树)

    poj   1251  Jungle Roads  (最小生成树) Link: http://poj.org/problem?id=1251 Jungle Roads Time Limit: 1000 ...

  4. Jungle Roads[HDU1301]

    Jungle Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  5. POJ1947 Rebuilding Roads[树形背包]

    Rebuilding Roads Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 11495   Accepted: 5276 ...

  6. 【OpenJudge 8463】Stupid cat & Doge

    http://noi.openjudge.cn/ch0204/8463/ 挺恶心的一道简单分治. 一开始准备非递归. 大if判断,后来发现代码量过长,决定大打表判断后继情况,后来发现序号不对称. 最后 ...

  7. 【OpenJudge 191】【POJ 1189】钉子和小球

    http://noi.openjudge.cn/ch0405/191/ http://poj.org/problem?id=1189 一开始忘了\(2^{50}\)没超long long差点写高精度Q ...

  8. 【OpenJudge 1665】完美覆盖

    http://noi.openjudge.cn/ch0405/1665/?lang=zh_CN 状压水题,手动转移 #include<cstdio> #include<cstring ...

  9. 【OpenJudge 1793】矩形覆盖

    http://noi.openjudge.cn/ch0405/1793/ 好虐的一道题啊. 看数据范围,一眼状压,然后调了好长时间QwQ 很容易想到覆盖的点数作为状态,我用状态i表示至少覆盖状态i表示 ...

随机推荐

  1. Nginx 502 Bad Gateway 错误的原因及解决方法

    http://my.oschina.net/zhouyuan/blog/118708 刚才在调试程序的时候,居然服务器502错误,昨天晚上也发生了,好像我没有做非常规的操作. 然后网上寻找了下答案, ...

  2. 生成new, old的 shell script

    #!/bin/bash #usage: ./create_dts_diff_v2.x.sh path1 path2 __new_dir=$1 __old_dir=$2 #=============== ...

  3. Morphia 学习一 注解

    http://blog.csdn.net/liumm0000/article/details/7535858 生命周期方法注解(delete没有生命周期事件)@PrePersist save之前被调用 ...

  4. javascript事件类型之界面拖拽交互

    一.在线DEMO 界面拖拽交互

  5. FullCalendar只可以从外部拖入,内部不能互相拖动

    startDrag: function(ev) { if(ev.originalEvent.initEvent){ return; } if (!this.isListening) { // star ...

  6. 认识angualrJS的resource服务

    这段时间公司有个项目要用到angularJS,于是就在网上开始各种找学习资料. 一开始下了一本<angularJS权威教程>,看了10章,实在看不下去了,只能说这本书对于才接触javasc ...

  7. 给app增加itunes文件共享支持的功能

    从网上查找的一些说法来看,是给app的plist配置文件中增加UIFileSharingEnabled,我后面查苹果官网的plist键值说明文档,也是这样说. 但实际上直接通过XCode打开plist ...

  8. 【AT91SAM3S】ADC中断方式采集数据

    板子依旧是英倍特的EK-SAM3S.ADC部分的原理图如下: PB1是一个复用引脚,在这里被用作AD功能,对应芯片上的AD5.即,使用片内ADC的5通道测VR1上2号引脚的电压. 实验采用了SysTi ...

  9. Paxos一致性算法

    分布式系统的整体思路:协调者与参与者 分布式系统中,每个节点可以知道自己在事务操作过程中是成功还是失败,但无法获取其他节点的操作结果,所以就不知道这个事务是否在所有机器上全都执行成功,所以需要引入一个 ...

  10. 动态布局--动态修改RelativeLayout宽高的方法

    本文实例讲述了Android编程动态修改RelativeLayout宽高的方法.分享给大家供大家参考,具体如下: 我们经常会动态修改RelativeLayout的宽高,这样的代码,比较简单,就是修改R ...