【题目链接】

http://poj.org/problem?id=3635

【算法】

优先队列BFS

实现类似于堆优化dijkstra

【代码】

#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#include <stack>
#include <limits.h>
using namespace std;
#define MAXN 1010
#define MAXM 10010
#define MAXC 110
const int INF = 2e9; int i,n,m,q,tot,u,v,d,c,s,t,ans;
int head[MAXN];
bool visited[MAXN][MAXC];
int dist[MAXN][MAXC];
int p[MAXN]; struct info
{
int pos,w,d;
friend bool operator < (info a,info b)
{
return a.d > b.d;
}
} ;
struct Edge
{
int to,w,nxt;
} e[MAXM<<]; inline void add(int u,int v,int w)
{
tot++;
e[tot] = (Edge){v,w,head[u]};
head[u] = tot;
}
inline int bfs(int c,int s,int t)
{
int i,j;
priority_queue< info > q;
info cur;
for (i = ; i <= n; i++)
{
for (j = ; j <= c; j++)
{
dist[i][j] = INF;
}
}
memset(visited,false,sizeof(visited));
dist[s][] = ;
while (!q.empty()) q.pop();
q.push((info){s,,});
while (!q.empty())
{
cur = q.top();
q.pop();
if (visited[cur.pos][cur.w]) continue;
if (cur.pos == t) return dist[cur.pos][cur.w];
visited[cur.pos][cur.w] = true;
if (cur.w < c)
{
if (dist[cur.pos][cur.w] + p[cur.pos] < dist[cur.pos][cur.w+])
{
dist[cur.pos][cur.w+] = dist[cur.pos][cur.w] + p[cur.pos];
q.push((info){cur.pos,cur.w+,dist[cur.pos][cur.w+]});
}
}
for (i = head[cur.pos]; i; i = e[i].nxt)
{
if (cur.w >= e[i].w)
{
if (dist[cur.pos][cur.w] < dist[e[i].to][cur.w-e[i].w])
{
dist[e[i].to][cur.w-e[i].w] = dist[cur.pos][cur.w];
q.push((info){e[i].to,cur.w-e[i].w,dist[e[i].to][cur.w-e[i].w]});
}
}
}
}
return -;
} int main()
{ scanf("%d%d",&n,&m);
for (i = ; i < n; i++) scanf("%d",&p[i]);
for (i = ; i <= m; i++)
{
scanf("%d%d%d",&u,&v,&d);
add(u,v,d);
add(v,u,d);
}
scanf("%d",&q);
while (q--)
{
scanf("%d%d%d",&c,&s,&t);
ans = bfs(c,s,t);
if (ans == -) printf("impossible\n");
else printf("%d\n",ans);
} return ; }

【POJ 3635】 Full Tank的更多相关文章

  1. bzoj 2295: 【POJ Challenge】我爱你啊

    2295: [POJ Challenge]我爱你啊 Time Limit: 1 Sec  Memory Limit: 128 MB Description ftiasch是个十分受女生欢迎的同学,所以 ...

  2. 【链表】BZOJ 2288: 【POJ Challenge】生日礼物

    2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 382  Solved: 111[Submit][S ...

  3. BZOJ2288: 【POJ Challenge】生日礼物

    2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 284  Solved: 82[Submit][St ...

  4. BZOJ2293: 【POJ Challenge】吉他英雄

    2293: [POJ Challenge]吉他英雄 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 80  Solved: 59[Submit][Stat ...

  5. BZOJ2287: 【POJ Challenge】消失之物

    2287: [POJ Challenge]消失之物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 254  Solved: 140[Submit][S ...

  6. BZOJ2295: 【POJ Challenge】我爱你啊

    2295: [POJ Challenge]我爱你啊 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 126  Solved: 90[Submit][Sta ...

  7. BZOJ2296: 【POJ Challenge】随机种子

    2296: [POJ Challenge]随机种子 Time Limit: 1 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 114  Solv ...

  8. BZOJ2292: 【POJ Challenge 】永远挑战

    2292: [POJ Challenge ]永远挑战 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 513  Solved: 201[Submit][ ...

  9. 【POJ 1125】Stockbroker Grapevine

    id=1125">[POJ 1125]Stockbroker Grapevine 最短路 只是这题数据非常水. . 主要想大牛们试试南阳OJ同题 链接例如以下: http://acm. ...

随机推荐

  1. 影响ERP成功实施的因素及实施方法

    一.影响ERP实施的因素 1.企业自身管理和认识上的问题.在ERP实施过程中没有用变革管理的理念和方法来策划和管理ERP的实施是导致ERP失败的主要原因. ERP作为一种管理工具他的实施本身就是操作手 ...

  2. [Windows Server 2008] 手工创建安全网站

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:手工创建安全站 ...

  3. 码书:编码与解码的战争 PDF 下载

    码书:编码与解码的战争 PDF 下载 下载地址:https://pan.baidu.com/s/14Y_krHh-unOv4g2KYFFDgQ 如需分享码:[打开微信]->[扫描右侧二维码]-& ...

  4. selenium之浏览器驱动

    selenium需要配合浏览器的驱动使用,几个主要的浏览器驱动如下 浏览器 链接 Chrome https://sites.google.com/a/chromium.org/chromedriver ...

  5. [SQL Service]从一张表取值更新另一张表字段

    1. update table_A set  table_A_column = ab.column from table_A aa left join table_B ab on aa.xx = ab ...

  6. 针对mdadm的RAID1失效测试

    背景 对软RAID(mdadm)方式进行各个场景失效测试. 一.初始信息 内核版本: root@omv30:~# uname -a Linux omv30 4.18.0-0.bpo.1-amd64 # ...

  7. Switch组件

    Switch组件,业务需求中经常遇到.我司的旧项目中,由于没有使用较为成熟点的组件库.自己实现了一个switch组件,但是实现的略微有些丑陋. 实现基本需求 https://jsfiddle.net/ ...

  8. Windows环境下flask+Apache+mod_wsgi部署及爬坑

    文章目录 安装python Windows 环境使用virtualenv和virtualenvwrapper 安装mod_wsgi 安装nginx 安装Apache 遇到的坑 安装Apache遇到的坑 ...

  9. 第三节:Web爬虫之BeautifulSoup解析库

    Beautiful Soup官方说明: Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为 ...

  10. 3D全景之ThreeJs

    3D全景之ThreeJs 一.前言 随着H5越来越多的被应用到各个领域,3D也越来越频繁的出现在各个H5案例中,今天我们就来讨论一下3D全景的实现. 据百度百科上介绍:720全景是视角超过人的正常视角 ...