丛林探险
来源:互联网 发布:淘宝如何设置去提问 编辑:程序博客网 时间:2024/04/28 06:27
描述
东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家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
样例1
样例输入1
4 51 2 2 31 3 3 51 4 7 102 4 4 63 4 2 61 45
样例输出1
11
限制
各个测试点1s
【题解】
本题有可行性限制,所以使用dfs。注意无向图,开数组时,大小翻倍
#include<cstdio>#include<cstring>#include<queue>#define INF 0x3f3f3f3fusing namespace std;const int maxm=40010,maxn=5010;struct Edge{int to,v,c,next;}edges[maxm<<1];int Size=0;int head[maxn]={0};inline void insert(int u,int v,int w,int c){Size++;edges[Size].to=v;edges[Size].c=c;edges[Size].v=w;edges[Size].next=head[u];head[u]=Size;}int n,m;bool vis[maxn]={0};int ans=INF;int from,to,dist,cost,s,t,k;void dfs(int u,int havec,int havew){// 顶点、消耗体力、消耗路程 if(havec>k||havew>ans)return;if(u==t){ans=havew;return ;}vis[u]=true;for(int i=head[u];i;i=edges[i].next)if(!vis[edges[i].to])dfs(edges[i].to,havec+edges[i].c,havew+edges[i].v);vis[u]=false; return;}int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d%d%d",&from,&to,&cost,&dist);insert(from,to,dist,cost);insert(to,from,dist,cost);}scanf("%d%d%d",&s,&t,&k);dfs(s,0,0);printf("%d\n",ans==INF?-1:ans);return 0; }
阅读全文
0 0
- 丛林探险
- 丛林探险
- 【搜索】丛林探险
- Vijos 1082 丛林探险
- P1082丛林探险
- 【vijos】P1082丛林探险DFS+剪枝版本
- vijos1082 丛林探险(最短路+搜索)
- A*(伪——vijos丛林探险
- 雷曼:丛林探险 Rayman J…
- 雷曼:丛林探险 Rayman J…
- 雷曼:丛林探险 Rayman J…
- 雷曼:丛林探险 Rayman J…
- 雷曼:丛林探险 Rayman J…
- 雷曼:丛林探险 Rayman J…
- 雷曼:丛林探险 Rayman J…
- 雷曼:丛林探险 Rayman J…
- 雷曼:丛林探险 Rayman J…
- 雷曼:丛林探险 Rayman J…
- 拒绝医疗广告:没良医的,记住吃菜饭就会好起来的。
- 解决小米手机打开google play商店一直在验证信息
- 给定入栈顺序,求所有可能的出栈顺序
- Logistic回归实战篇之预测病马死亡率(三)
- LQB-1
- 丛林探险
- 计算机之父阿兰·图灵传奇的一生
- C#快捷键
- 第六章 number 和string 常见的属性和方法
- mac下的Intellij IDEA常用快捷键
- 人类如何从不同角度识别物体?你需要对「小样本学习」有所了解
- convert-sorted-array-to-binary-search-tree
- 使用Android Sutdio 调试smali源码
- 推荐一个红烧肉POS挖矿的矿池,HSR矿池pos挖矿,也是火星人准备投资的项目之一