light oj 1254 - Prison Break 最短路
题目大意:n个点m条边的有向图,q次询问c,s,t,表示汽车邮箱容量为c,求从起点s到终点t的最小费用。汽车在每个点可以加任意的油,每个点的单位油价为a[i]。
题目思路:利用最小费优先队列优化最短路,dist[u][use]代表到达u节点,剩余use单位汽油的花费值。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#define MAXSIZE 1015
#define INF 0x3f3f3f3f
#define LL long long using namespace std; typedef pair<int,int>p;
typedef pair<p,int>pp; int dist[MAXSIZE][],val[],a[*MAXSIZE],k; struct node
{
int u;
int v;
int w;
int next;
} G[*MAXSIZE]; void Add(int u,int v,int w)
{
G[k].u=u;
G[k].v=v;
G[k].w=w;
G[k].next=a[u];
a[u]=k++;
} int spfa(int s,int t,int c)
{
memset(dist,INF,sizeof(dist));
priority_queue<pp,vector<pp>,greater<pp> >Q;
dist[s][]=;
Q.push(pp(p(dist[s][],),s)); // 按优先级顺序入队
while(!Q.empty())
{
pp k=Q.top();
Q.pop();
int w=k.first.first; //已花费的钱
int use=k.first.second; //剩余油量
int u=k.second; //当前节点
if(w > dist[u][use])
continue;
if(u==t) //最小费优先
return dist[u][use];
for(int i=a[u]; i!=-; i=G[i].next)
{
int v=G[i].v;
if(G[i].w > c)
continue;
if(use >= G[i].w && dist[v][use - G[i].w] > dist[u][use]) //当前剩余油量足够到达v
{
dist[v][use - G[i].w] = dist[u][use];
Q.push(pp(p(dist[v][use - G[i].w],use - G[i].w),v));
} }
if(use < c)//当前油量不足以到达下一个点,就向邮箱里加1个单位的汽油
{
dist[u][use+] = dist[u][use] + val[u];
Q.push(pp(p(dist[u][use+],use+),u));
}
}
return INF;
} void Init()
{
memset(a,-,sizeof(a));
k=;
} int main()
{
int T,n,m,c,s,t,u,v,w,cns=;
scanf("%d",&T);
while(T--)
{
Init();
scanf("%d%d",&n,&m);
for(int i=; i<n; i++)
scanf("%d",&val[i]);
for(int i=; i<=m; i++)
{
scanf("%d%d%d",&u,&v,&w);
Add(u,v,w);
Add(v,u,w);
}
scanf("%d",&m);
printf("Case %d:\n",cns++);
while(m--)
{
memset(dist,INF,sizeof(dist));
scanf("%d%d%d",&c,&s,&t);
int ans=spfa(s,t,c);
if(ans != INF)
printf("%d\n",ans);
else
printf("impossible\n");
}
}
return ;
}
light oj 1254 - Prison Break 最短路的更多相关文章
- 1254 - Prison Break
1254 - Prison Break PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Mic ...
- Light OJ 1316 A Wedding Party 最短路+状态压缩DP
题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...
- hdu 3681 Prison Break (TSP问题)
Prison Break Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖
题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...
- Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖
标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...
- Prison Break
Prison Break 时间限制: 1 Sec 内存限制: 128 MB提交: 105 解决: 16[提交][状态][讨论版] 题目描述 Scofild又要策划一次越狱行动,和上次一样,他已经掌 ...
- Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖
题目来源:Light OJ 1406 Assassin`s Creed 题意:有向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问题 ...
- Light OJ 1288 Subsets Forming Perfect Squares 高斯消元求矩阵的秩
题目来源:Light OJ 1288 Subsets Forming Perfect Squares 题意:给你n个数 选出一些数 他们的乘积是全然平方数 求有多少种方案 思路:每一个数分解因子 每隔 ...
- Light OJ 1272 Maximum Subset Sum 高斯消元 最大XOR值
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011686226/article/details/32337735 题目来源:problem=12 ...
随机推荐
- noi.openjudge 1.12.6
http://noi.openjudge.cn/ch0112/06/ 总时间限制: 2000ms 内存限制: 65536kB 描述 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传 ...
- FineUILearning
一:表单控件的学习: 1(1) <f:PageManager > 将对象引用设置到对象的实例,否则页面无法显示: (2)<Menu></Menu>就是下拉菜单控件 ...
- java基础入门-语法(1)
因为平时用到一些java的项目,比如ElasticSearch,zookeeper等,有时也想看看里面怎么实现的,或者看到别人分析原理时候会用到java源码, 自己也想跟着学一下,最起码能看懂别人的分 ...
- FastDFS + Nginx代理方式访问
FastDFS + Nginx代理方式访问 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.在storage上安装nginx 1>.下载nginx软件(http://ngi ...
- passat QA / error code 20190210
s 帕萨特B5 技术资料下载 https://pan.baidu.com/s/1KXYly7eGDUSI5QiLcz8fiQ 提取码: 1i7u 星期日,10,二月,2019,17:16:16:317 ...
- 面向对象【day07】:析构函数(六)
二.析构函数 一.概述 析构函数,第一次听说这个函数的名称,那这个函数到底是干嘛的呢?什么才是析构函数呐? 定义:在实例销毁的时候调用的函数 二.析构函数定义 2.1 定义 1 2 3 4 5 6 7 ...
- Ubuntu调节屏幕亮度
下面的方式支持双屏,最多支持四个屏幕调节亮度. sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt-get upd ...
- PHP中的表单传值
前言:试想一下如果PHP没有了表单传值,那么就相当于一个没有表达能力的人,因此表单传值在php中是相当重要的,但是不难,接下来我们一起来探讨一下吧------> (一)什么是表单传值 概念:表 ...
- OPC和DCOM配置
本文为Java实现OPC通信的一部分 系统:使用win10 64位专业版 PDF文件: 本文,链接: 百度网盘 密码: reht, Win7和Win7_SP1网络OPC配置,链接: 百度网盘 密码 ...
- 使用idea创建springboot项目并打成war包发布到tomcat8上
1.将pom.xml中的打包方式修改为war <groupId>com.borya</groupId> <artifactId>Project</artifa ...