优先队列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?的更多相关文章

  1. UVA11367 Full Tank? 【分层图最短路】

    题目 After going through the receipts from your car trip through Europe this summer, you realised that ...

  2. UVA-11367 Full Tank? (dijkstra)

    题目大意:有n个加油站,每个加油站的油价已知,并且已知油箱的大小,问能否从起点走到终点,若能,找出最小油费. 题目分析:记得在做暴力搜索的时候做过这道题,不算难.但是这次是用dijkstra算法做的, ...

  3. 1.1.1最短路(Floyd、Dijstra、BellmanFord)

    转载自hr_whisper大佬的博客 [ 一.Dijkstra 比较详细的迪杰斯特拉算法讲解传送门 Dijkstra单源最短路算法,即计算从起点出发到每个点的最短路.所以Dijkstra常常作为其他算 ...

  4. 最短路算法详解(Dijkstra/SPFA/Floyd)

    新的整理版本版的地址见我新博客 http://www.hrwhisper.me/?p=1952 一.Dijkstra Dijkstra单源最短路算法,即计算从起点出发到每个点的最短路.所以Dijkst ...

  5. [ASE]项目介绍及项目跟进——TANK BATTLE·INFINITE

    童年的记忆,大概是每周末和小伙伴们围坐在电视机前,在20来寸的电视机屏幕里守卫着这个至今都不知道是什么的白色大鸟. 当年被打爆的坦克数量估计也能绕地球个三两圈了吧. 十几年过去了,游戏从2D-3D,画 ...

  6. poj3635Full Tank?[分层图最短路]

    Full Tank? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7248   Accepted: 2338 Descri ...

  7. Codeigniter整合Tank Auth权限类库的教程

    Codeigniter整合Tank Auth权限类库的教程一开始找了很多CodeIgniter的类库,觉得都不怎么样,后来干脆自己通过CI的钩子系统写了权限管理.但是还是不怎么满意,后来有人推荐tan ...

  8. poj 3635 Full Tank? ( bfs+dp思想 )

    Full Tank? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5857   Accepted: 1920 Descri ...

  9. hdu 4445 Crazy Tank (暴力枚举)

    Crazy Tank Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  10. 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 ...

随机推荐

  1. 降维(二)PCA

    PCA 主成成分分析(Principal Component Analysis,PCA)在目前是非常热门的降维算法.首先它找到一个最接近数据的超平面,然后将数据投影到这个平面上. 保持方差(Prese ...

  2. Ubuntu 22.04扩容LVM空间

    今天为了编译ThingsBoard的源代码,发现原来给虚拟机分配的40个G不够用了.于是乎在VMWare Workstation中扩容了40G的磁盘空间.但是此时lvm是不会自动扩容的,因此我们需要手 ...

  3. SD中的VAE,你不能不懂

    什么是VAE? VAE,即变分自编码器(Variational Autoencoder),是一种生成模型,它通过学习输入数据的潜在表示来重构输入数据. 在Stable Diffusion 1.4 或 ...

  4. Go 如何对多个网络命令空间中的端口进行监听

    Go 如何对多个网络命令空间中的端口进行监听 需求为 对多个命名空间内的端口进行监听和代理. 刚开始对 netns 的理解不够深刻,以为必须存在一个新的线程然后调用 setns(2) 切换过去,如果有 ...

  5. 一次Java服务内存过高的分析过程

    现象 年前,收到了短信报警,显示A服务的某台机器内存过高,超过80% 如上图所示,内存会阶段性增加.奇怪的是,十多台机器中只有这一台有这个问题 堆内内存分析 最先怀疑是内存泄漏的问题,所以首先使用jm ...

  6. PLSQL 编码设置

    1.先查询plsql编码格式 select userenv('language')from dual 2.新建用户变量,变量名=NLS_LANG,变量值,刚才sql查询的结果 保存后,重启plsql即 ...

  7. mybatis 逆行工程 附源码

    导读 逆向工程说白了,就可以简化开发工作量,自动生成一些死板的东西,比如POJO.映射文件等等,然后在将代码拷贝至实际工程,直接拿来用! 项目结构 GeneratorSqlMap.java impor ...

  8. MongoDB安装、基础操作和聚合实例详解

    虽然MongoDB这些年很流行,但笔者之前没研究过,现在有需求研究这类NoSQL的数据库,是为了验证其是否可被替换. MongoDB是很轻量的文档数据库,简单测试也懒得专门准备虚拟机环境了,直接在ma ...

  9. P1754

    球迷购票问题 题意描述 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N ...

  10. leetcode中等(字符串):[3, 6, 8, 49, 179, 299, 524, 539, 609, 648]

    目录 3. 无重复字符的最长子串 6. Z 字形变换 8. 字符串转换整数 (atoi) 49. 字母异位词分组 179. 最大数 299. 猜数字游戏 524. 通过删除字母匹配到字典里最长单词 5 ...