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=;
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=;i<=n;i++)
{
d[i]=INF;
vis[i]=;
} queue<int> que;
que.push(s);
vis[s]=;
d[s]=;
pow[s]=power;
while(!que.empty())
{
int now=que.front();que.pop();
vis[now]=;
for(int i=;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]=;
}
}
}
}
} int main()
{
scanf("%d%d",&n,&m);
for(int i=;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 ;
}
#include <cstdio>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
const int MAXN = ;
const int INF = 0x7f7f7f7f;
struct Edge{
int to, w, dist;
Edge(){}
Edge(int to, int w, int dist)
{
this->to = to;
this->w = w;
this->dist = dist;
}
};
struct Node{
int u, cost;
Node(){}
Node(int u, int cost)
{
this->u = u;
this->cost = cost;
}
};
int n, m;
vector<Edge> mp[MAXN];
int d[MAXN], vis[MAXN];
int start, goal,power;
void spfa()
{
for (int i = ; i <= n; i++)
{
d[i] = INF;
vis[i] = ;
}
queue<Node> que;
que.push(Node(start,));
vis[start] = ;
d[start] = ;
while (!que.empty())
{
Node now = que.front(); que.pop();
int u = now.u;
vis[u] = ;
for (int i = ; i < mp[u].size(); i++)
{
Edge e = mp[u][i];
if (now.cost + e.w <= power&&d[e.to]>e.dist + d[u])
{
d[e.to] = e.dist + d[u];
if (!vis[e.to])
{
vis[e.to] = ;
que.push(Node(e.to,now.cost+e.w));
}
}
}
}
if (d[goal] != INF)
cout << d[goal];
else
cout << -;
}
int main()
{
// freopen("C:\\Users\\11624\\Desktop\\input.in","r", stdin);
// freopen("C:\\Users\\11624\\Desktop\\output.out","w",stdout);
cin >> n >> m;
for (int i = ; i < m; i++)
{
int u, v, w, dist;
cin >> u >> v >> w >> dist;
mp[u].push_back(Edge(v, w, dist));
mp[v].push_back(Edge(u, w, dist));
}
cin >> start >> goal >> power;
spfa();
// fclose(stdin);
// fclose(stdout);
return ;
}
VIJOS:P1082丛林探险的更多相关文章
- P1082丛林探险
P1082丛林探险 描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,BB决定随科考队去神秘丛林探险. ...
- vijos1082丛林探险
P1082丛林探险 描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,BB决定随科考队去神秘丛林探险. ...
- Vijos——T 1082 丛林探险
https://vijos.org/p/1082 描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,B ...
- POJ 2431 Expedition(探险)
POJ 2431 Expedition(探险) Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] A group of co ...
- vijos 1082
描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,BB决定随科考队去神秘丛林探险.在出发之前,他搜集了 ...
- 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...
- 【最短路】【spfa】小vijos P1447 Updown
小vijos P1447 Updown 背景 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大 ...
- 【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include< ...
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
随机推荐
- JVM、垃圾回收、内存调优、常见參数
一.什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写.JVM是一种用于计算设备的规范.它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现 ...
- Linux内核编译过程分析
http://pan.baidu.com/s/1mgtACVu 其中是我总结生成的一些文档,以便于理解当我们输入make uImage后,系统是怎么一步一步生成uImage的,我采用的是逆向分析的方法 ...
- 解决php网页运行超时问题:Maximum execution time of 30 seconds exceeded
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Inetpub\wwwroot\ry.php on line 11 意 ...
- sharepoint 2013 资源管理器copy大文件到本地失败解决方法
Error 0x800700DF: The file size exceeds the limit allowed and cannot be saved 中文错误信息是:文件大小超出同意范围.不能被 ...
- 图像处理之基础---二维卷积c实现
http://wenku.baidu.com/link?url=4RzdmvP9sdaaUbnVEW4OyBD-g67wIOiJjKFF3Le_bu7hIiBS7I6hMcDmCXrQwsHvrsPv ...
- [项目构建 十一]babasport 购物车的原理及实现.
今天来开始写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗? 2)用户登陆了用户名密码,添加商品, ...
- ASP.NET动态网站制作(0)
前言:一直想系统地学习一下网站建设的相关内容,看过相关的书籍,也跟着视频学过,但总觉得效率不高,学过的东西印象不深刻,或许还是自己动手实践的少.无意中免费听了一堂讲ASP.NET网站建设的课,觉得性价 ...
- iOS - 集成SDK问题
1.大部分社交平台接口不支持https协议. 问题描述:在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据.对ShareSDK来说,具体表现可能是,无法授权.分享 ...
- [URAL-1517][求两个字符串的最长公共子串]
Freedom of Choice URAL - 1517 Background Before Albanian people could bear with the freedom of speec ...
- 在linux通过源码编译安装redis详细步骤
1.下载源码包 [root@localhost opt]# wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩redis ...