[最短路]飞行

题目描述

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;但它们在意图上完全不同…

廖雪峰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;并将反映崩溃前的…

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

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

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

文件上传技术是一个很实用的技术&#xff0c;有着很广泛的应用&#xff0c;在ASP.NET自身的前一个版本ASP里实现这个功能&#xff0c;就必须使用第三方的组件或者自己开发组件了&#xff0c;现在&#xff0c;用ASP.NET实现起来就简单得多了&#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 …

c# HashTable (哈希表)

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

Spring集成–配置Web服务客户端超时

介绍 在Spring Integration的支持下&#xff0c;您的应用程序可以使用出站Web服务网关来调用Web服务。 调用由该网关处理&#xff0c;因此您只需要担心构建请求消息和处理响应。 但是&#xff0c;使用这种方法并不明显&#xff0c;如何配置其他选项&#xff0c;例如设置超时或操…

将txt文件和excel文件导入SQL2000数据库

在做一些web数据库管理系统的时候经常要实现将帐户批量注册的功能&#xff0c;今天就来讲讲如何在C#-web项目中将txt文件和excel文件导入SQL2000数据库。1.数据库准备在SQL2000数据库的实例数据库pubs中建立一个数据表txtInsert&#xff0c;字段很简单&#xff1a;id&#xff0…

Java 8 Friday:Java 8将彻底改变数据库访问

在Data Geekery &#xff0c;我们喜欢Java。 而且&#xff0c;由于我们真的很喜欢jOOQ的流畅的API和查询DSL &#xff0c;我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 对于Java 8系列 &#xff0c;我们很荣幸主持Iu Ming-Yee Iu博士发表的非常相关的嘉宾帖子。 Iu …

Linux文件权限管理

权限管理 1、权限解读 权限&#xff1a;用户针对文件是否有读、写、执行的权利。 权限划分&#xff1a;读&#xff08;Read&#xff09;、写&#xff08;Write&#xff09;、执行&#xff08;eXecute&#xff09; 权限针对用户的划分&#xff1a;主人&#xff08;User&#xff…

Sqoop数据迁移工具的使用

文章作者&#xff1a;foochane 原文链接&#xff1a;https://foochane.cn/article/2019063001.html Sqoop数据迁移工具的使用 sqoop简单介绍 sqoop数据到HDFS/HIVE sqoop数据到MySQL 1 sqoop简单介绍 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。用…

java中io.nio.aio_Java中网络IO的实现方式-BIO、NIO、AIO

在网络编程中&#xff0c;接触到最多的就是利用Socket进行网络通信开发。在Java中主要是以下三种实现方式BIO、NIO、AIO。关于这三个概念的辨析以前一直都是好像懂&#xff0c;但是表达的不是很清楚&#xff0c;下面做个总结完全辨析清楚。1. BIO方式首先我用一个较为通俗的语言…

C++中this指针

由类生成对象时&#xff0c;对象中只保存私有数据。 因为由一个类生成的所有对象为其数据服务的方法都是相同的&#xff0c;因此&#xff0c;一个类中的方法是大家所共用的。 而这就牵扯到当对象A调用方法时&#xff0c;如何保证该方法操作的数据是对象A的数据。 #include<i…

jfinal java搭建_Eclipse快速搭建Jfinal web应用 (一)

JFinal简介JFinal 是基于 Java 语言的极速 WEB ORM 框架&#xff0c;其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率&#xff01;为您节约更多时间&#xff0c…

PHP后台处理jQuery Ajax跨域请求问题 — xx was not called解决办法

// 前台代码 $.ajax({url: http://www.ushark.net/home/save_trial_apply,dataType: jsonp,processData: false,data: $(.layui-layer-content #trialFormInfo).serialize(), }) .done(function(data) {layer.msg(申请成功); }) .fail(function(jqXHR, textStatus, errorThrown…

如何使用VisualVM监视服务器上的多个JVM

在上一篇文章中&#xff0c;我向您展示了如何使用单个管理员服务器和多个托管服务器启动WebLogic Server。 这些启动之后&#xff0c;您如何检查它们的健康状况&#xff1f; 您可以使用管理员的/ console网络应用。 但是&#xff0c;所有默认的Oracle / Open JDK 6附带的另一个…

排序算法 JavaScript

一、冒泡排序 算法介绍&#xff1a; 1.比较相邻的两个元素,如果前一个比后一个大&#xff0c;则交换位置。 2.第一轮把最大的元素放到了最后面。 3.由于每次排序最后一个都是最大的&#xff0c;所以之后按照步骤1排序最后一个元素不用比较。 function bubble_sort(arr){var swa…