VIJOS:P1082丛林探险

描述

东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试。正好我国科学家2005年4月将首次对东非大裂谷进行科考,BB决定随科考队去神秘丛林探险。在出发之前,他搜集了国内外有关神秘丛林探险的资料,并绘制成一张地图:该地图上有若干安全点(包括入口点和出口点),并将这些安全点编号为1、2、…、n;如果一个安全点和另一个安全点有一条路直接相通,则用一条边标示;该图是一个连通图(任意两点间有至少一条路径),地图上每条路的长度和走这条路需要耗费的体力都做了标示。

KK行走速度为1,并知道自己体力为K。他想知道根据自己的体力情况能否成功地穿过丛林。

格式

输入格式

第一行两个整数n(<=5000) m(<=40000),分别表示地图上安全点的个数和边的数目;
第2行至第m+1 行每行4个整数x y c d,x、y表示有直接相联边的两个点的编号,c走这条路需要耗费的体力;d表示边的长度;(其中150<=c,d<=300)
第m+2行两个整数s t,分别表示安全的入口点和出口点的编号;
第m+3行一个整数k,表示BB的体力值;(K<10^9)
同一行上的多个数据用空格隔开。

输出格式

一个整数,如果BB能安全地从如入口穿过丛林到达出口,输出最短时间,否则输出-1

输入:

4 5
1 2 2 3
1 3 3 5
1 4 7 10
2 4 4 6
3 4 2 6
1 4
5

输出

11

最短路,多加一个限制条件。

#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
const int MAXN=5005;
const int INF=0x3f3f3f3f;
struct Node{
    int v,dist,w;
    int pow;
    Node(){}
    Node(int v,int dist,int w)
    {
        this->v=v;
        this->dist=dist;
        this->w=w;
    }
};
vector<Node> mp[MAXN];
int n,m;
int d[MAXN],vis[MAXN];
int pow[MAXN];//表示到达该点后还剩多少能量
int power;
void spfa(int s)
{
    for(int i=1;i<=n;i++)
    {
        d[i]=INF;
        vis[i]=0;
    }

    queue<int> que;
    que.push(s);
    vis[s]=1;
    d[s]=0;
    pow[s]=power;
    while(!que.empty())
    {
        int now=que.front();que.pop();
        vis[now]=0;
        for(int i=0;i<mp[now].size();i++)
        {
            Node e=mp[now][i];
            if(d[e.v]>d[now]+e.dist&&pow[now]>=e.w)
            {
                d[e.v]=d[now]+e.dist;
                pow[e.v]=pow[now]-e.w;
                if(!vis[e.v])
                {
                    que.push(e.v);
                    vis[e.v]=1;
                }
            }
        }
    }
}

int main()
{
    scanf("%d%d",&n,&m);
    for(int i=0;i<m;i++)
    {
        int u,v,dist,w;
        scanf("%d%d%d%d",&u,&v,&w,&dist);
        mp[u].push_back(Node(v,dist,w));
        mp[v].push_back(Node(u,dist,w));
    }
    int st,gl;
    scanf("%d%d",&st,&gl);
    scanf("%d",&power);
    spfa(st);
    if(d[gl]==INF)
        printf("-1\n");
    else
        printf("%d\n",d[gl]);

    return 0;
}    
时间: 2024-10-10 00:25:37

VIJOS:P1082丛林探险的相关文章

P1082丛林探险

P1082丛林探险 描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,BB决定随科考队去神秘丛林探险.在出发之前,他搜集了国内外有关神秘丛林探险的资料,并绘制成一张地图:该地图上有若干安全点(包括入口点和出口点),并将这些安全点编号为1.2.….n:如果一个安全点和另一个安全点有一条路直接相通,则用一条边标示:该图是一个连通图(任意两点间有至少一条路径),地图上每条路的长度和走这条路需要耗费的体力都

vijos1082丛林探险

P1082丛林探险 描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,BB决定随科考队去神秘丛林探险.在出发之前,他搜集了国内外有关神秘丛林探险的资料,并绘制成一张地图:该地图上有若干安全点(包括入口点和出口点),并将这些安全点编号为1.2.….n:如果一个安全点和另一个安全点有一条路直接相通,则用一条边标示:该图是一个连通图(任意两点间有至少一条路径),地图上每条路的长度和走这条路需要耗费的体力都

tyvj 丛林探险

描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,BB决定随科考队去神秘丛林探险.在出发之前,他搜集了国内外有关神秘丛林探险的资料,并绘制成一张地图:该地图上有若干安全点(包括入口点和出口点),并将这些安全点编号为1.2.-.n:如果一个安全点和另一个安全点有一条路直接相通,则用一条边标示:该图是一个连通图(任意两点间有至少一条路径),地图上每条路的长度和走这条路需要耗费的体力都做了标示. KK行走

POJ 2431 Expedition(探险)

Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Being rather poor drivers, the cows unfortunately managed to run over a rock and puncture the truck's f

探索式测试Exploratory Testing

"任何足够先进的技术,看上去都与魔法无异",出自英国著名未来学家亚瑟 克拉克,他曾于出版了经典科幻小说<2001天空漫游>. 探索式测试(Exploratory Testing,也称探索性测试)是一种软件测试方法,最先是Cem Kaner 在1983年提出的.这是一种强调个人自由与责任的测试方法,让独立测试人员可以借用不断的学习来改善测试的规划与测试的执行,而在测试的过程中也会同时改善测试案例达到相辅相成的效果.在Nortel和微软的很多项目中,都采用了这一新颖.有趣和富有

时间林商城系统

时间林商城系统开发,时间林农业养殖类模式开发,时间林区块链技术开发,时间林理财APP开发搭建,时间林交易平台APP系统,时间林农林模式管理系统开发,时间林区块链营销APP制作,时间林旅游APP区块链项目开发,时间林区块链技术项目开发,时间林理财APP交易平台搭建. 区块链是先调整生产关系,然后调整生产力,它的思维就是以机器为核心,用代码来发生表决,以做到真正的公开.公正.公平. 被"认养"并挂上实名树牌的大杉树时间林商城系统APP开发:找罗经理180微2635电8708 其次,可做投资

【最短路】【spfa】小vijos P1447 Updown

小vijos P1447 Updown 背景 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄.faebdc 之塔一共有 N 层,升降梯在每层都有一个停靠点.手柄有 M 个控制槽,第 i个控制槽旁边标着一个数 Ci, 满足 C1<C2<C3<...<CM. 如果 Ci>0,表示手柄扳动到该槽时,电梯将上升 Ci 层:如果 Ci<0,表示手柄扳动到该槽时,电梯将下

丛林中的路

总时间限制:  1000ms 内存限制:  65536kB 描述 热带岛屿Lagrishan的首领现在面临一个问题:几年前,一批外援资金被用于维护村落之间的道路,但日益繁茂的丛林无情的侵蚀着村民的道路,导致道路维修开销巨大,长老会不得不放弃部分道路的维护.上图左侧图显示的是正在使用道路的简图以及每条路每个月的维修费用(单位为aacms).现在长老会需要提出一种方案,即需要保证村落之间都可以互相到达,又要将每个月的道路维修费用控制在最小.村子编号为从A到I.上图右侧显示的方案最小维修开销为216

03:丛林中的路

总时间限制:  1000ms 内存限制:  65536kB 描述 热带岛屿Lagrishan的首领现在面临一个问题:几年前,一批外援资金被用于维护村落之间的道路,但日益繁茂的丛林无情的侵蚀着村民的道路,导致道路维修开销巨大,长老会不得不放弃部分道路的维护.上图左侧图显示的是正在使用道路的简图以及每条路每个月的维修费用(单位为aacms).现在长老会需要提出一种方案,即需要保证村落之间都可以互相到达,又要将每个月的道路维修费用控制在最小.村子编号为从A到I.上图右侧显示的方案最小维修开销为216