UVA11367 Full Tank?
优先队列bfs
1 #include<cmath>
2 #include<queue>
3 #include<cstdio>
4 #include<string>
5 #include<cstdlib>
6 #include<cstring>
7 #include<iostream>
8 #include<algorithm>
9 using namespace std;
10 #define rg register
11 typedef long long ll;
12 #define gmax(a,b) a=max(a,b)
13 #define FOR(i,a,b) for(rg int i=a;i<=b;++i)
14 #define qxx(i,a) for(rg int i=fir[a];i;i=nxt[i])
15 #define gc pa==pb&&(pb=(pa=buf)+fread(buf,1,100000,stdin),pa==pb)?EOF:*pa++
16 static char buf[100000],*pa(buf),*pb(buf);
17
18 inline int rd()
19 {
20 rg int x(0),w(1);
21 rg char ch(gc);
22 while(ch<'0' || ch>'9')
23 {
24 if(ch=='-') w=-1;
25 ch=gc;
26 }
27 while(ch>='0' && ch<='9') x=x*10+ch-48,ch=gc;
28 return x*w;
29 }
30
31 const int N=1010,M=10010,C=105,INF=99999999;
32 struct node
33 {
34 int u,cc,co;
35 node(int U,int CC,int CO){u=U;cc=CC;co=CO;}
36 };
37 bool operator < (node x,node y){return x.co>y.co;}
38 int f[N][C];
39 int pr[N],u[M<<1],v[M<<1],w[M<<1],fir[N],nxt[M<<1];
40 int n,m,tot,c,s,e;
41 priority_queue<node> q;
42
43 void bfs()
44 {
45 while(!q.empty()) q.pop();
46 q.push(node(s,0,0));
47 f[s][0]=0;
48 while(!q.empty())
49 {
50 node p=q.top();q.pop();
51 //cout<<p.u<<" "<<p.cc<<" "<<p.co<<endl;
52 if(p.u==e) {cout<<p.co<<endl;return;}
53 if(p.cc<c && p.co+pr[p.u]<f[p.u][p.cc+1])
54 {
55 f[p.u][p.cc+1]=p.co+pr[p.u];
56 q.push(node(p.u,p.cc+1,p.co+pr[p.u]));
57 }
58 qxx(i,p.u)
59 {
60 if(p.cc>=w[i] && f[v[i]][p.cc-w[i]]>=p.co)
61 {
62 f[v[i]][p.cc-w[i]]=p.co;
63 q.push(node(v[i],p.cc-w[i],p.co));
64 }
65 }
66 }
67 cout<<"impossible"<<endl;
68 }
69
70 int main()
71 {
72 n=rd(),m=rd();
73 FOR(i,1,n) pr[i]=rd();
74 while(tot<(m<<1))
75 {
76 u[++tot]=rd(),v[tot]=rd(),w[tot]=rd();
77 ++u[tot],++v[tot];
78 nxt[tot]=fir[u[tot]],fir[u[tot]]=tot;
79 ++tot;u[tot]=v[tot-1],v[tot]=u[tot-1],w[tot]=w[tot-1];
80 nxt[tot]=fir[u[tot]],fir[u[tot]]=tot;
81 }
82 int qq=rd();
83 FOR(i,1,qq)
84 {
85 memset(f,8,sizeof(f));
86 c=rd(),s=rd(),e=rd();
87 ++s,++e;
88 bfs();
89 }
90 return 0;
91 }
UVA11367 Full Tank?的更多相关文章
- UVA11367 Full Tank? 【分层图最短路】
题目 After going through the receipts from your car trip through Europe this summer, you realised that ...
- UVA-11367 Full Tank? (dijkstra)
题目大意:有n个加油站,每个加油站的油价已知,并且已知油箱的大小,问能否从起点走到终点,若能,找出最小油费. 题目分析:记得在做暴力搜索的时候做过这道题,不算难.但是这次是用dijkstra算法做的, ...
- 1.1.1最短路(Floyd、Dijstra、BellmanFord)
转载自hr_whisper大佬的博客 [ 一.Dijkstra 比较详细的迪杰斯特拉算法讲解传送门 Dijkstra单源最短路算法,即计算从起点出发到每个点的最短路.所以Dijkstra常常作为其他算 ...
- 最短路算法详解(Dijkstra/SPFA/Floyd)
新的整理版本版的地址见我新博客 http://www.hrwhisper.me/?p=1952 一.Dijkstra Dijkstra单源最短路算法,即计算从起点出发到每个点的最短路.所以Dijkst ...
- [ASE]项目介绍及项目跟进——TANK BATTLE·INFINITE
童年的记忆,大概是每周末和小伙伴们围坐在电视机前,在20来寸的电视机屏幕里守卫着这个至今都不知道是什么的白色大鸟. 当年被打爆的坦克数量估计也能绕地球个三两圈了吧. 十几年过去了,游戏从2D-3D,画 ...
- poj3635Full Tank?[分层图最短路]
Full Tank? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7248 Accepted: 2338 Descri ...
- Codeigniter整合Tank Auth权限类库的教程
Codeigniter整合Tank Auth权限类库的教程一开始找了很多CodeIgniter的类库,觉得都不怎么样,后来干脆自己通过CI的钩子系统写了权限管理.但是还是不怎么满意,后来有人推荐tan ...
- poj 3635 Full Tank? ( bfs+dp思想 )
Full Tank? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5857 Accepted: 1920 Descri ...
- hdu 4445 Crazy Tank (暴力枚举)
Crazy Tank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- Aquarium Tank(csu1634+几何+二分)Contest2087 - 湖南多校对抗赛(2015.05.24)-G
Aquarium Tank Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 15 Solved: 4[Submit][Status][Web Board ...
随机推荐
- python重拾第十三天-那就做个堡垒机吧
本节内容 项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功 ...
- 两个防火墙的IPsec
首先要保证双面都能通信到对面! 拓扑图: P1 没有要求默认就行 P2 没有要求默认就行 对流体 对流体细节问题 预共享密钥要一致 IPsec 创建隧道 添加路由 Ping对方激活ipsec Ping ...
- java springboot监听事件和处理事件
在Spring Boot中,监听和处理事件是一种常用的模式,用于在应用程序的不同部分之间传递信息.Spring 的事件发布/订阅模型允许我们创建自定义事件,并在这些事件发生时由注册的监听器进行处理.这 ...
- Mybatis Plus 3.X版本的insert填充自增id的IdType.ID_WORKER策略源码分析
总结/朱季谦 某天同事突然问我,你知道Mybatis Plus的insert方法,插入数据后自增id是如何自增的吗? 我愣了一下,脑海里只想到,当在POJO类的id设置一个自增策略后,例如@Table ...
- PHP易混淆函数的区别及用法汇总(函数和方法的区别)
1.echo和print的区别PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此可以作 ...
- CSS:弹性布局(display:flex)
道友请了~ 最近小道在修练主修功法<嘉蛙>之余,偶然从一名散修手中得到了一本<CSS秘籍>,刚好近期有自己做微信小程序的打算,这不是瞌睡了给递枕头么.欣喜若狂,翻开第一章,拜读 ...
- Python 基于pymongo操作Mongodb学习总结
实践环境 Python 3.6.4 pymongo 4.1.1 pymongo-3.12.3-cp36-cp36m-win_amd64.whl 下载地址:https://pypi.org/simple ...
- Windows/Linux 安装NVM及npm配置
nvm安装及npm配置 nvm nvm下载 Windows: Releases · coreybutler/nvm-windows (github.com) Windows直接下载相应版本的nvm-s ...
- DASCTF2022.07赋能赛PWN部分WP
DASCTF2022.07赋能赛PWN部分WP eyfor 程序保护情况 64位ida逆向 可以看见是一个随机数的逻辑,只要我们猜不对4次就可以进入漏洞函数,但是我感觉这原本可能是==号,让用随机数的 ...
- Arm V8 - ADRP指令
ADRP指令 作用 将当前指令所在页的基地址加/减去字节差,并写入目标寄存器 字节差:与目标地址页基地址的间隔字节数,其为PAGE_SIZE的整数倍 此时的字节差就是指令所操作的立即数 该指令通常配合 ...