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. @SuppressWarnings有什么用处?

    J2SE 提供的最后一个批注是 @SuppressWarnings.该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默. @SuppressWarnings 批注允许您选择 ...

  2. C++ Primer : 第十三章 : 动态内存管理类

    /* StrVec.h */ #ifndef _STRVEC_H_ #define _STRVEC_H_ #include <memory> #include <string> ...

  3. MapReduce介绍

    一.MapReduce模型 1.MapReduce是大规模数据(TB级)计算的利器,Map和Reduce是它的主要思想,来源于函数式编程语言. 2.Map负责将数据打散,Reduce负责对数据进行聚集 ...

  4. CSS3 动画基础

    该文为译文转载,原文地址:http://tech.163.com/mobile/10/0106/09/5SB96QSM00112K88.html   译文:你需要知道的CSS3 动画技术 原文:Wha ...

  5. Discovering the Computer Science Behind Postgres Indexes

    This is the last in a series of Postgres posts that Pat Shaughnessy wrote based on his presentation ...

  6. 5天玩转C#并行和多线程编程

    5天玩转C#并行和多线程编程系列文章目录 5天玩转C#并行和多线程编程 —— 第一天 认识Parallel 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq 5天玩转C#并行和多线程编 ...

  7. PyCharm/IntelliJ IDEA Golang开发环境搭建(最方便快捷的GO语言开发环境)

    IntelliJ太牛了.为了配置Go语言开发环境,折腾了半天,下IDE(Sublime Text,IntelliJ Idea),然后装Go插件.装Go插件还要下载插件项目源码,编译等等,Sublime ...

  8. 黄聪:wordpress向一个页面POST数据,出现404页面访问不了

    出现这个情况,说明POST的数据中存在一些关键词,触发调用了page以外的模版.比如POST数据中有 name , author 等参数. 解决办法,就是把这些参数改一下名称.

  9. MapReduce编程job概念原理

    在Hadoop中,每个MapReduce任务都被初始化为一个job,每个job又可分为两个阶段:map阶段和reduce阶段.这两个阶段分别用两个函数来表示.Map函数接收一个<key,valu ...

  10. Xamarin.Froms项目中包含的文件

    Clearly, the program created by the Xamarin.Forms template is very simple, so this is an excellent o ...