当前位置: 首页 > 编程日记 > 正文

P4568 [JLOI2011]飞行路线

P4568 [JLOI2011]飞行路线

Description

  • Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。

    Alice和Bob现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推出优惠,他们可以免费在最多kk种航线上搭乘飞机。那么Alice和Bob这次出行最少花费多少?

Input

  • 数据的第一行有三个整数,n,m,k,分别表示城市数,航线数和免费乘坐次数。
    第二行有两个整数,s,t,分别表示他们出行的起点城市编号和终点城市编号。
    接下来有m行,每行三个整数,a,b,c,表示存在一种航线,能从城市a到达城市b,或从城市b到达城市a,价格为c。

Output

  • 只有一行,包含一个整数,为最少花费。

Sample Input

5 6 1
0 4
0 1 5
1 2 5
2 3 5
3 4 5
2 3 3
0 2 100

Sample Output

8

Data Size

  • 对于100%的数据,2≤n≤10000,1≤m≤50000,0≤k≤10,0≤s,t<n,0≤a,b<n,a≠b,0≤c≤1000

题解:

  • 分层图最短路。
  • 观察数据范围,k特别小(<=10)。所以可以用拆点的思想,就是把一个点拆成k种情况:用1次机会到达的、用2次机会到达的...用k次机会到达的。这样所有的状态就变成了一个大图。在这个大图上面跑最短路即可。
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
#define N 100005
#define M 1000005
using namespace std;struct Node
{int val, pos;friend bool operator < (Node x, Node y) {return x.val > y.val;}
};
struct E {int next, to, dis;} e[M];
int n, m, k, s, t, num, ans = 0x7fffffff;
int h[N], dis[N];
bool vis[N]; int read()
{int x = 0; char c = getchar();while(c < '0' || c > '9') c = getchar();while(c >= '0' && c <= '9') {x = x * 10 + c - '0'; c = getchar();}return x;
}void add(int u, int v, int w)
{e[++num].next = h[u];e[num].to = v;e[num].dis = w;h[u] = num;
}void dijskra()
{memset(dis, 0x3f, sizeof(dis));priority_queue<Node> que;dis[s] = 0, que.push((Node){0, s});while(!que.empty()){int x = que.top().pos;  que.pop();if(vis[x]) continue;vis[x] = 1;for(int i = h[x]; i != 0; i = e[i].next)if(dis[x] + e[i].dis < dis[e[i].to]){dis[e[i].to] = dis[x] + e[i].dis;if(!vis[e[i].to]) que.push((Node){dis[e[i].to], e[i].to});}}
}int main()
{cin >> n >> m >> k >> s >> t;s++, t++;for(int i = 1; i <= m; i++){int u = read() + 1, v = read() + 1, w = read();add(u, v, w), add(v, u, w);for(int j = 1; j <= k; j++){add(u + j * n, v + j * n, w);add(v + j * n, u + j * n, w);add(u + (j - 1) * n, v + j * n, 0);add(v + (j - 1) * n, u + j * n, 0);}}dijskra();for(int i = 0; i <= k; i++)ans = min(ans, dis[t + i * n]);cout << ans; return 0;
}

转载于:https://www.cnblogs.com/BigYellowDog/p/11216971.html

相关文章:

拿到淘宝offer后的胡思乱想plus面试总结

没想到能拿到淘宝的实习offer&#xff0c;心里还是很激动的。 大三以后就忙着找实习&#xff0c;参加了SAP和淘宝的校招&#xff0c;呵呵&#xff0c;还好&#xff0c;第二次就拿到了offer&#xff0c;剩下还有腾讯和百度的招聘&#xff0c;决定去看看&#xff0c;但是还是要走…

Map与List数据操作

为避免与数据库的多次连接&#xff0c;减少数据库的压力&#xff0c;先将所有的订货数据先从数据库中抽取出来&#xff0c;而后再将数据按门店进行分类汇总以备待用&#xff0c;Map与List混合操作&#xff0c;理解数据结构。提神醒脑哦。以下是原始数据结构&#xff1a;[{store…

《Java虚拟机规范》阅读(三):Class文件格式

每一个Class都对应着唯一的一个类或借口的定义信息。这里&#xff0c;我们称为"Class文件格式"只是通俗的将任意一个符合有效的类或借口的格式这么称呼&#xff0c;但是它并不一定是以磁盘文件的形式存在。 每个Class文件都是由8字节为单位的字节流组成&#xff0c;所…

【spring】自动装配

山顶洞人方法&#xff1a;aotowire UserDao.java 代码实现&#xff1a; public class UserDao {private DBUtil dbu;public DBUtil getDbu() {return dbu;}public void setDbu(DBUtil dbu) {this.dbu dbu;}public void test() {System.out.println(dbu);} }DBUtil.java 代…

扩展jquery实现客户端表格的分页、排序

下面链接中是我用jQuery的扩展来实现的表格分页和排序&#xff0c;使用这个扩展必须加上表头<thead>和<tbody>标签&#xff0c;因为我是 通过<tbody>来进行分页的&#xff0c;要是不加thead&#xff0c;那么表头也要作为分页计算时的一个行了。 下载最新代码…

Win7中如何删除word模板

Win7中如何删除word模板 计算机→本地磁盘c盘→用户→Administrator→AppData→Roaming→Microsoft→Templates转载于:https://blog.51cto.com/ilanni/555302

Spring 学习笔记

Spring 的 Ioc 容器所有的组件都是被动的&#xff08; Passive&#xff09;&#xff0c;所有的组件初始化和调用都由容器负责。组件处在一个容器当中&#xff0c;由容器负责管理。BeanFactory 根据配置文件确定容器中 bean 的实现&#xff0c;管理 bean 之间的依赖关系。通常&a…

【spring】初识aop(面向切面编程) 使用jdk动态代理

BankServiceIImple.java 代码实现&#xff1a; package com.zzxtit.aop;import java.math.BigDecimal;public interface BankServiceImple {public void transfer(String source, String target, BigDecimal money);public void withdraw(String account, BigDecimal money);…

sigaction

#include <signal.h> int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact); struct sigaction {   void (*sa_handler)(int);   void (*sa_sigaction)(int, siginfo_t *, void *);   sigset_t sa_mask;   int sa_flags;   void …

003本周总结报告

本周对java的循坏结构和条件语句以及switch分支进行了复习并通过九九乘法表和制作日历来更加熟练使用和理解循环&#xff0c;并用eclipse替代了记事本来编写程序&#xff0c;同时针对记事本编写java程序后台运行出现的GBK不可映射字符问题先后采用了 javac -encoding UTF-8 …

HDU-1203 I NEED A OFFER!-0、1背包及空间优化

I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5280 Accepted Submission(s): 1799Problem DescriptionSpeakless很早就想出国&#xff0c;现在他已经考完了所有需要的考试&#xff0c;准备了…

docker监控系统

第一&#xff1a;docker监控系统之命令行式监控 第二&#xff1a;docker监控系统之cadvisor 第三&#xff1a;docker监控系统之 第四&#xff1a;docker监控系统之 转载于:https://www.cnblogs.com/fengjunhua/p/8968210.html

Visual Studio 2005 Team System下载地址

注册一个msn就可以去微软下载了&#xff0c;关于替换序列号变成正版的方法我没有试&#xff0c;team suite我在用&#xff0c;但Team Foundation Server 我还没有安装好Microsoft Visual Studio 2005 简体中文正式版Visual Studio 2005 Team Suite 180 天试用版(可更换key变为正…

【spring】springAop开发

xml开发方式 springboot的使用 1、声明一个parent 代码实现&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.0.RELEASE</version><relati…

使用 SqlHelperParameterCache 类管理参数

SqlHelperParameterCache类是位于 Microsoft.ApplicationBlocks.Data命名空间底下。它底下有三个方法&#xff0c;分别是&#xff1a; CacheParameterSet&#xff1a;用于将SqlParameters 数组存储到缓存中GetCachedParameterSet&#xff1a;用于检索读取缓存中SqlParameters数…

改善C#程序的建议6:在线程同步中使用信号量

所谓线程同步&#xff0c;就是多个线程之间在某个对象上执行等待&#xff08;也可理解为锁定该对象&#xff09;&#xff0c;直到该对象被解除锁定。C#中对象的类型分为引用类型和值类型。CLR在这两种类型上的等待是不一样的。我们可以简单的理解为在CLR中&#xff0c;值类型是…

Jerry眼中的SAP客户数据模型

本文Jerry将介绍八款SAP产品中的客户模型。希望您在阅读完本文之后&#xff0c;能对SAP客户模型设计的思路有一个最最粗浅的了解。 由于Jerry水平和精力所限&#xff0c;本文不会详细阐述这些产品里的客户模型设计细节&#xff0c;而是介绍了一种方法&#xff0c;如果您对这些模…

【spring】spring JDBC开发 、 将创建表生成sql语句的方法

将navicate中已存在表的创建转化成sql语句的方法 1、右击表&#xff0c;选择对象信息 2、点击DDL jar包引入 1、spring-starter-jdbc 代码实现&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…

PL/SQL ——分页编程

通过PL/SQL编程&#xff0c;编写分页存储过程。代码如下所示&#xff1a; 1 --PL/SQL开发编写分页代码 2 --创建包 3 create or replace package Page as 4 type test_cursor is ref cursor 5 end Page; 6 --创建存储过程 7 create or replace procedure Page( 8 (tablenam…

My view towards Machine Learning

Introduction:[to be continued]转载于:https://www.cnblogs.com/JVKing/articles/2290780.html

两个表的更新、表的复制

update 表1 set from 表1&#xff0c;表2 where 条件 表的复制数据 1.select * into newtable from table 2.insert into table select table2 select identity(int,1,1),* into newtable from .. 这条语句有时挺管用的转载于:https://www.cnblogs.com/leshang/archive/2…

Java数据结构简述

1、数组 概念&#xff1a;一个存储元素的线性集合。 数组声明和创建&#xff1a; dataType[] arrayRefVar new dataType[arraySize]; 二维数组&#xff08;多维数组&#xff09;声明和创建&#xff1a; dataType[][] arrayName new dataType[arraylenght1][arraylenght2]; PS…

CORS漏洞利用检测和利用方式

CORS全称Cross-Origin Resource Sharing, 跨域资源共享&#xff0c;是HTML5的一个新特性&#xff0c;已被所有浏览器支持&#xff0c;不同于古老的jsonp只能get请求。 检测方式&#xff1a; 1.curl访问网站   curl https://www.huasec.com -H "Origin: https://test.com…

【spring】具名参数

具名参数 配置xml文件 1、配置dataSource&#xff08;数据源&#xff09; 代码实现&#xff1a; <context:property-placeholderlocation"DB.properties"></context:property-placeholder><bean id"dataSource"class"com.alibaba.d…

利用委托和泛型实现树的常用操作

在日常开发中&#xff0c;经常遇到对树的操作&#xff0c;我们可以利用泛型和委托对这些树进行操作&#xff0c;这样就不需要每有一个树就要实现相应的功能了。 源码在http://files.cnblogs.com/haiconc/LangTest.zip 首先&#xff0c;使用类泛型声明&#xff1a; public class…

Scott的ASP.net MVC框架系列文章之四:处理表单数据(2)

前几周我发表了一系列文章介绍我们正在研究的ASP.NET MVC框架。ASP.NET MVC框架为你提供了一种新的开发Web应用程序的途径&#xff0c;这种途径可以让应用程序变得更加层次清晰&#xff0c;而且更加有利于对代码进行单元测试和支持TDD&#xff08;测试驱动开发&#xff09;开发…

eclipse工作空间配置导出

由于工作与学习的需求&#xff0c;需要使用不同的工作空间。而eclipse的新建工作空间其他以前的配置都没有继承过来&#xff0c;那么就得重新配置一遍。 经过学习其他前辈们的经验与自己的摸索总结一下3种方法&#xff1a; 方法一&#xff1a;使用eclipse的导出功能。 工作目录…

探讨UnsupportedOperationException的原因及解决方案

[原文链接]{https://blog.csdn.net/liu_005/article/details/74091805} 转载于:https://www.cnblogs.com/Wbin01/p/11222483.html

成长轨迹44 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2799、2976、2975、2742】...

一次ac的就不说啥了。。 2799:浮点数格式 View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <ctype.h> 4 #include <cmath> 5 6 char flo[10050][55]; 7 int poi[10050]; 8 9 int main()10 {11 int num;12 scanf("%d…

【转载】xmind的使用安装方法

原文链接&#xff1a;https://blog.csdn.net/qq_16093323/article/details/80967867