[最短路]飞行

题目描述

WFYZ的校园很大,这里生活着很多生物,比如住在钟楼上的的鸽子,其中鸽子冉冉和她的妹妹凝凝白天在不同的地方吃虫,而在晚上她们都回到钟楼休息。她俩是两只懒鸟,于是提出了一个计划,尽量减少她们在飞行时花费的总能量。

当从一个区域飞到邻近区域时,冉冉花费R个能量单位,凝凝花费S个能量单位。然而,如果冉冉和凝凝在同一个区域时,冉冉可以背着凝凝飞,而只消耗P个能量单位(其中P可能远远小于R + S)。如果P非常小,最节能的解决方案可能是冉冉和凝凝前往一个区域,然后冉冉背着凝凝飞回钟楼。当然,如果P很大,那么冉冉和凝凝可能各自飞。
给定R,S和P以及校园的布局,请计算冉冉和凝凝到达谷仓所需的最低能量。

 

输入

第一行输入包含正整数R,S,P,N和M. (R,S,P,N,M<=40,000)。R,S和P如上所述。 N是校园中的区域数(编号为1..N,其中N> = 3),有M条飞行线路。冉冉和凝凝分别从1区和2区开始。钟楼在N区.
以下输入M行,代表两个区域的有飞行路线。连接是双向的。总是可以沿着一系列这样的连接从场1到场N,场2到场N。

 

输出

一个整数,冉冉和凝凝集体到达钟楼需要花费的最小能量。

 

样例输入

复制样例数据

4 4 5 8 8
1 4
2 3
3 4
4 7
2 5
5 6
6 8
7 8

样例输出

22

 

提示

在例子中,冉冉从1到4,凝凝从2到3到4,然后,他们一起旅行从4到7到8。
【数据规模与约定】
对于20%的数据,1≤N≤500,1≤M≤2000。
对于100%的数据,1≤N≤40000,1≤M≤40000。

思路:

跑三遍最短路,分别是两个人(啊,两只鸽子)分别飞到钟楼的花费,还有就是从钟楼到各个区域的最短路,然后枚举会合点

 1 #include <iostream>
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 typedef long long ll;
 5 const int maxn = 4e4+50;
 6 int sum=0;
 7 int tot,r,s,p,n,m;
 8 int head[maxn*2],ver[maxn*2],edge[maxn*2],Next[maxn*2],d[maxn*2];
 9 bool v[maxn*2];
10 int len1[maxn],len2[maxn],len3[maxn];
11 queue<int> q;
12 void add(int x,int y,int z)
13 {
14     ver[++tot]=y;
15     edge[tot]=z;
16     Next[tot]=head[x];
17     head[x]=tot;
18 }
19 void spfa(int t)
20 {
21     memset(d,0x3f,sizeof(d));
22     memset(v,0,sizeof(v));
23     d[t]=0;
24     v[t]=1;
25     q.push(t);
26     while(q.size())
27     {
28         int x=q.front();
29         q.pop();
30         v[x]=0;
31         for(int i=head[x];i;i=Next[i])
32         {
33             int y=ver[i],z=edge[i];
34             if(d[y]>d[x]+z)
35             {
36                 d[y]=d[x]+z;
37                 if(!v[y])
38                 {
39                     q.push(y),v[y]=1;
40                 }
41             }
42         }
43     }
44 }
45 int main()
46 {
47     scanf("%d%d%d%d%d",&r,&s,&p,&n,&m);
48     for(register int i=1;i<=m;i++)
49     {
50         int x,y;
51         scanf("%d%d",&x,&y);
52         add(x,y,1);
53         add(y,x,1);
54     }
55     spfa(1);
56     for(register int i=1;i<=n;i++)
57     {
58         len1[i]=d[i];
59     }
60     int t1=d[n];
61     spfa(2);
62     for(register int i=1;i<=n;i++)
63     {
64         len2[i]=d[i];
65     }
66     int t2=d[n];
67     int res=r*t1+s*t2;
68     spfa(n);
69     for(register int i=1;i<=n;i++)
70     {
71         len3[i]=d[i];
72     }
73     for(register int i=1;i<=n;i++)
74     {
75         int temp1=r*len1[i]+s*len2[i];
76         int temp2=p*len3[i];
77         res=min(res,temp1+temp2);
78     }
79     printf("%d\n",res);
80     //cout << "Hello world!" << endl;
81     return 0;
82 }
View Code

 

转载于:https://www.cnblogs.com/SoulSecret/p/10304510.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java状态和策略设计模式之间的差异

为了在Core Java应用程序中正确使用状态和策略设计模式&#xff0c;对于Java开发人员清楚地了解它们之间的区别很重要。 尽管状态和策略设计模式的结构相似&#xff0c;并且都基于开放式封闭设计原则&#xff0c;从SOLID设计原则表示为“ O”&#xff0c;但它们在意图上完全不同…

【原创】系统分析师--任重而道远

今天查到了系统分析师的成绩。有坏消息&#xff0c;也有好消息。 坏消息当然就是意料之中的没过了&#xff0c;好消息是我基本上没有花什么时间去准备&#xff0c;但是结果却比想象中的要好。 案例分析这一场过了。基础知识差几分&#xff0c;论文只是及格分的一半&#xf…

XML文档的简易增删查改

dom4j解析一、利用dom4j操作元素节点 1.查询第一本书的书名&#xff0c;并输出到控制台 2.给第一本书添加一个特价节点, 并修改第一本书的售价节点的内容为19.8元 3.删除第二本书的作者节点二、利用dom4j操作属性节点 1.给第一本书添加一个属性&#xff0c;如&#xff1a;出版社…

廖雪峰Java3异常处理-1错误处理-2捕获异常

1捕获异常 1.1 finally语句保证有无错误都会执行 try{...}catch (){...}finally{...} 使用try...catch捕获异常可能发生异常的语句放在try{...}中使用catch捕获对应的Exception及其子类1.2 捕获多个异常 try{...} catch() {...} catch(){...}finally{..} 使用多个catch子句&…

更新数据库

方法一&#xff1a;在对SQL数据库进行更新时&#xff0c;用CommandBuilder对像来自动构建sql命令&#xff0c;来起到更新的作用;这种方法用起来比较方便&#xff0c;具体代码如下&#xff1a; 以下代码都在xp系统下测试通过 环境&#xff1a;vs.net2005 \ sql server 2000\xpus…

在崩溃或断电后测试Lucene的索引耐久性

Lucene有用的事务功能之一是索引持久性 &#xff0c;它可以确保一旦成功调用IndexWriter.commit &#xff0c;即使操作系统或JVM崩溃或断电&#xff0c;或者您杀死-KILL JVM进程&#xff0c;重启后索引也将保持完整&#xff08;未损坏&#xff09;&#xff0c;并将反映崩溃前的…

Bash 脚本 set 命令教程

http://www.ruanyifeng.com/blog/2017/11/bash-set.html set命令是 Bash 脚本的重要环节&#xff0c;却常常被忽视&#xff0c;导致脚本的安全性和可维护性出问题。本文介绍它的基本用法&#xff0c;让你可以更安心地使用 Bash 脚本。 一、简介 我们知道&#xff0c;Bash 执行脚…

Jmeter、postman、python 三大主流技术如何操作数据库?

1、前言 只要是做测试工作的&#xff0c;必然会接触到数据库&#xff0c;数据库在工作中的主要应用场景包括但不限于以下&#xff1a; 功能测试中&#xff0c;涉及数据展示功能&#xff0c;需查库校验数据正确及完整性&#xff1b;例如商品搜索功能 自动化测试或性能测试中&a…

[转][HTML]css属性

1、字体属性(type)font-family(使用什么字体)font-style(字体的样式&#xff0c;是否斜体)&#xff1a;normal/italic/obliquefont-variant(字体大小写)&#xff1a;normal/small-capsfont-weight(字体的粗细)&#xff1a;normal/bold/bolder/lithterfont-size(字体的大小)&…

7-OKHttp使用详解,步骤挺详细的,适合初学者使用!

OKHttp使用详解&#xff0c;步骤挺详细的&#xff0c;适合初学者使用&#xff01; 一&#xff0c;OKHttp介绍 okhttp是一个第三方类库&#xff0c;用于android中请求网络。 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和Leak…

变量与递归函数

变量与递归函数一、变量 变量分为全局变量和局部变量。 python中全局变量和局部变量的最大区别在于局部变量只能通过函数去访问&#xff0c;而全局变量可以直接访问。 举个例子&#xff1a; name linxu #全局变量 def change_name():namepython #局部变量print(name) …

使用MOXy 2.5.1快速且有点脏的JSON模式生成

因此&#xff0c;这些天我正在为即将推出的Oracle云服务开发新的REST API&#xff0c;因此我需要做的一件事情就是能够为模型中的bean自动生成JSON模式。 我正在使用MOXy从POJO生成JSON&#xff0c;从EclipseLink 2.5.1版本开始&#xff0c;它现在具有从bean模型生成JSON模式的…

手机端input[type=date]的placeholder不起作用

<div class"input clearfix"><label class"fl">起始日期</label><input class"fl text_date" type"date" name"" value"" placeholder"年/月/日" /></div><div cla…

Python中的TCP编程,实现客户端与服务器的聊天(socket)

参考大神blog:自己再写一个 https://blog.csdn.net/qq_31187881/article/details/79067644转载于:https://www.cnblogs.com/studybrother/p/10306903.html

利用ASP.NET向服务器上传文件[转]

文件上传技术是一个很实用的技术&#xff0c;有着很广泛的应用&#xff0c;在ASP.NET自身的前一个版本ASP里实现这个功能&#xff0c;就必须使用第三方的组件或者自己开发组件了&#xff0c;现在&#xff0c;用ASP.NET实现起来就简单得多了&#xff0c;我们不需要使用任何组件就…

JavaSE:如何设置/获取您自己的文件和目录属性

在上一篇文章“确定特定文件系统支持的视图”中 &#xff0c;了解如何询问文件系统存储&#xff0c;并了解特定文件属性视图的可支持性。 简而言之&#xff0c;我们将探索最高级和重要的文件属性视图之一&#xff0c;即用户定义的文件属性视图 。 特别是&#xff0c;在系统之…

java中HashMap详解

HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员&#xff0c;其中 HashMap 是 Map 接口的常用实现类&#xff0c;HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同&#xff0c;但它们底层的 Hash 存储机制完全一样&#xff0c;甚…

java代码编写的文本特征提取_Test1 java语言写的特征提取源代码,有搞文字识别的可以下载一看,简单易学 Develop 274万源代码下载- www.pudn.com...

文件名称: Test1下载 收藏√ [5 4 3 2 1 ]开发工具: Java文件大小: 35 KB上传时间: 2015-03-02下载次数: 46提 供 者: 常杰详细说明&#xff1a;java语言写的特征提取源代码&#xff0c;有搞文字识别的可以下载一看&#xff0c;简单易学-Feature extraction of the Java …

Iframe父页面与子页面之间的相互调用

父页面&#xff1a; <!DOCTYPE html> <html> <head><title>parents</title><meta charset"UTF-8"> </head> <body> <div id"default">div内容</div> <iframe src"child.html" i…

c# HashTable (哈希表)

HashTable 哈希表 也是System.Collections集合下的数据结构类 它储存的也是Object类型的对象 但是它在内存中是散列排布的 因为这个特性&#xff0c;非常适合存储大量的数据 在HashTable中一个键只能对应一个值&#xff0c;一个值可以对应多个键&#xff08;多对一&#xff09;…