优先队列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. openEuler 20.04 TLS3 上的 Python3.11.9 源码一键构建安装

    #! /bin/bash # filename: python-instaler.sh SOURCE_PATH=/usr/local/source # 下载源码包 mkdir -p $SOURCE_P ...

  2. 02-HTML知识点

    01 元素的介绍 02 元素的属性 03 元素的嵌套关系 04 HTML结构分析 4.1 文档声明[这个不叫元素] 4.2 html元素 4.3 head元素 主要用来写文档的配置信息 05 HTML ...

  3. 构建3D虚拟世界,有哪些3D建模方式?

    "沉浸.3D世界.虚拟社交.虚拟购物",人们畅想通过AR/VR以及其他互联网技术,把现实世界的楼房街道.天气温度.人际关系等投射到虚拟世界,拥有一个网络分身. 但目前来看,要想实现 ...

  4. 全志T113-i+玄铁HiFi4开发板硬件说明书(2)

    前 言 本文档主要介绍开发板硬件接口资源以及设计注意事项等内容,测试板卡为全志T113-i+玄铁HiFi4开发板,由于篇幅问题,本篇文章共分为上下两集,点击账户可查看更多内容详情,开发问题欢迎留言,感 ...

  5. input标签 手机端数字键盘

    要一点击提起数字键盘,安卓只要设置input的类型是number或tel, ios 需要 pattern="number"可以直接打开搜狗输入法的数字键盘,可以输入.和数字如果只能 ...

  6. 关于ComfyUI的一些Tips

    关于ComfyUI的一些Tips 前言: 最近发的ComfyUI相关文章节奏不知道会不会很快,在创作的时候没有考虑很多,想着把自己的知识分享出去.后台也看到很多私信,有各种各样的问题,这是我欠缺考虑了 ...

  7. vue --version 显示的却是vue cli的版本号,为什么?

    vue --version 显示的却是vue cli的版本号,为什么? 如果您在运行 vue --version 命令时显示的是 Vue CLI 的版本号,而不是 Vue.js 的版本号,那可能是因为 ...

  8. [oeasy]教您玩转python - 0006 - 自由软件运动和开源运动

    ​ 顺序执行 回忆上次内容 上次写了10000行代码 10000行代码 都是写在明面上的 人家一下载​​py​​ 文件 就能看个明明白白 修改或者运行程序都很方便 这程序全都这么公开出来 大家随意修改 ...

  9. C# 泛型SQLHelper<T>类

    示例[1] 1.创建SQLHelper类 using System.Collections.Generic; using System.Configuration; using System.Data ...

  10. TypeScript快速上手

    TypeScript快速上手 参考TypeScript零基础入门 轻松搞定ts进行整理 TS文档:TypeScript: The starting point for learning TypeScr ...