然而我也不知道这是啥啊。。。反正差不多。。。哪位大佬给区分一下QWQ。。


好的,我把堆的<写反了。。又调了一个小时。。你能不能稳一点。。。。

记录状态:所在位置u,油量c,花费w

扩展状态:

1.如果c+1<=C,就加1升油,为什么只加1升?因为如果这个状态不优,那它就会乖乖待在堆底下,不会多出现冗余状态;如果优,就在下一次扩展继续加油,所以并不会丢状态

2.向所在连边(u,v)更新,如果可以跑过去,就尝试去更新v的状态。

注意不同油量的状态要分开存,十分像分层图???

#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
#define R register int
using namespace std;
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
int n,m,t,cnt;
int fir[],w[],d[][];
bool vis[][];
struct edge{
int v,nxt,w;
#define vr(i) e[i].v
#define nxt(i) e[i].nxt
#define w(i) e[i].w
}e[];
inline void add(int u,int v,int ww) {vr(++cnt)=v,w(cnt)=ww,nxt(cnt)=fir[u],fir[u]=cnt;}
struct node{int u,c,w; bool operator < (const node& y) const {return w>y.w;}
node() {} node(int uu,int cc,int ww) {u=uu,c=cc,w=ww;}
};
inline void bfs(int s,int t,int C) {
memset(d,0x3f,sizeof(d)); memset(vis,,sizeof(vis));
priority_queue<node>q; d[s][]=; q.push(node(s,,));
while(q.size()) {
node tmp=q.top(); q.pop(); R u=tmp.u,c=tmp.c,tw=tmp.w;
vis[u][c]=true;
if(u==t) {printf("%d\n",tw); return ;}
if(c+<=C&&!vis[u][c+]&&d[u][c+]>d[u][c]+w[u]) {d[u][c+]=d[u][c]+w[u]; q.push(node(u,c+,d[u][c+]));}
for(R i=fir[u];i;i=nxt(i)) { R v=vr(i),ew=w(i);
if(c>=ew&&!vis[v][c-ew]&&tw<d[v][c-ew]) {
d[v][c-ew]=tw; q.push(node(v,c-ew,d[v][c-ew]));
}
}
} printf("impossible\n");
}
signed main() {
n=g(); m=g(); for(R i=;i<n;++i) w[i]=g();
for(R i=,u,v,w;i<=m;++i) u=g(),v=g(),w=g(),add(u,v,w),add(v,u,w);
t=g(); while(t--) {R C=g(),s=g(),t=g(); bfs(s,t,C);}
}

2019.04.26

POJ3635 Full Tank? 优先队列BFS or 分层图最短路 or DP?的更多相关文章

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

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

  2. 【bzoj2763】[JLOI2011]飞行路线 (分层图最短路)(优先队列dij)

    [bzoj2763][JLOI2011]飞行路线 2014年3月25日1,7260 Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城 ...

  3. Nowcoder contest 370H Rinne Loves Dynamic Graph【分层图最短路】

    <题目链接> 题目大意:Rinne 学到了一个新的奇妙的东西叫做动态图,这里的动态图的定义是边权可以随着操作而变动的图.当我们在这个图上经过一条边的时候,这个图上所有边的边权都会发生变动. ...

  4. POJ 1724 (分层图最短路)

    ### POJ 1724 题目链接 ### 题目大意: 给你 N 个点 ,M 条有向路,走每条路需要花费 C 元,这段路的长度为 L . 给你 K 元,问你能否从 1 走到 N 点且花费不超过 K 元 ...

  5. free(分层图最短路)(2019牛客暑期多校训练营(第四场))

    示例: 输入: 3 2 1 3 11 2 12 3 2 输出:1 题意:求s,t最短路,可将k条边权值置零. 题解:分层图最短路原题 #include<bits/stdc++.h> usi ...

  6. 【题解】P3645 [APIO2015]雅加达的摩天楼(分层图最短路)

    [题解]P3645 [APIO2015]雅加达的摩天楼(分层图最短路) 感觉分层图是个很灵活的东西 直接连边的话,边数是\(O(n^2)\)的过不去 然而我们有一个优化的办法,可以建一个新图\(G=( ...

  7. HDU 5669 线段树优化建图+分层图最短路

    用线段树维护建图,即把用线段树把每个区间都标号了,Tree1中子节点有到达父节点的单向边,Tree2中父节点有到达子节点的单向边. 每次将源插入Tree1,汇插入Tree2,中间用临时节点相连.那么T ...

  8. BZOJ 2763 分层图最短路

    突然发现我不会分层图最短路,写一发. 就是同层中用双向边相连,用单向边连下一层 #include <cstdio> #include <algorithm> #include ...

  9. 【网络流24题】 No.15 汽车加油行驶问题 (分层图最短路i)

    [题意] 问题描述:给定一个 N*N 的方形网格,设其左上角为起点◎, 坐标为( 1, 1), X 轴向右为正, Y轴向下为正, 每个方格边长为 1, 如图所示. 一辆汽车从起点◎出发驶向右下角终点▲ ...

随机推荐

  1. JavaScript(JS)实现省市联动选择下拉列表

    在开发一个应用的时候需要用刀省市联动的下拉列表,网上找到不少.但是要么太复杂,难以修改:要么根本就用不了,最后自己在一个示例中提取出数据,然后自己写了一个,简单易懂,适合新手... 代码如下: Pro ...

  2. Apache htdigest命令

    一.简介 htdigest命令是Apache的Web服务器内置工具,用于创建和更新储存用户名.域和用于摘要认证的密码文件.服务器上的资源可以被限制为仅允许由htdigest建立的文件中的用户访问.使用 ...

  3. 22.NULL 值

    NULL 值是遗漏的未知数据. 默认地,表的列可以存放 NULL 值. 本章讲解 IS NULL 和 IS NOT NULL 操作符. SQL NULL 值 如果表中的某个列是可选的,那么我们可以在不 ...

  4. 【Azure Active Directory】单一登录 (SAML 协议)

    Azure Active Directory 支持 SAML 2.0 Web 浏览器单一登录 (SSO) 配置文件. 若要请求 Azure Active Directory 对用户进行身份验证时,云服 ...

  5. 使用Jenkins远程部署war包到tomcat container

    Jenkins首先使用maven将源代码进行编译打包,之后需要将war包传送到tomcat服务器上进行部署. 来看一下Jenkins的基本配置,首先需要安装插件"Deploy to cont ...

  6. C# 筛选Datatable、foreach填充DGV,datatable与datarows转换

    public void SelectFG1(string Nane) { string SetText = "卫材代码 like '%" + Nane + "%' or ...

  7. android和.net webservice中的DES加密算法

    也是看了一堆的例子,本身并不会写加密算法,好在只要会用就行了,我们把在app中使用的参数加密,然后在.net端的webservice中进行解密,本身并没有什么问题,但是android下和.net下的d ...

  8. .Net中的并行编程-1.路线图(转)

    大神,大神,膜拜膜拜,原文地址:http://www.cnblogs.com/zw369/p/3834559.html 目录 .Net中的并行编程-1.路线图 分析.Net里线程同步机制 .Net中的 ...

  9. C#静态类 静态方法与非静态方法比较

    静态类 在类(class)上加入static修饰,表示该类无法被实例化,并将该类中,无法实例化变量或函数 静态类的主要特性 仅包含静态成员 无法实例化 静态类的本质,时一个抽象的密封类,所以不能被继承 ...

  10. UI控件的位置

    1.该位置指的是本控件的中心点位于点 (100, 100)上(不包含尺寸),可以用于中心对齐在使用frame设置位置的情况下 self.view.center = CGPointMake(100, 1 ...