当前位置: 首页 > news >正文

UVa 383 Shipping Routes

题目描述

Slow Boat to China\texttt{Slow Boat to China}Slow Boat to China航运公司需要一个程序来帮助快速向潜在客户报价。运费取决于货物的大小和所需的运输段数。一个运输段连接两个仓库,但并非所有仓库之间都有直接连接,因此从一个仓库到另一个仓库可能需要多个运输段。

每个数据集包含111303030个仓库。每个仓库由两个大写字母标识。运输段是双向的,存在于任意两个不同的仓库之间。

运费 = 货物大小 × 所需运输段数 ×100100100

对于给定的运输请求(货物大小、始发仓库、目的仓库),程序输出最佳(最便宜)的运费,如果无法运输则输出相应信息。

输入格式

第一行包含整数TTT1≤T≤101 \leq T \leq 101T10),表示数据集中数据集的个数。

每个数据集的第一行包含三个整数:

  • MMM1≤M≤301 \leq M \leq 301M30):仓库数量
  • NNN0≤N≤M(M−1)/20 \leq N \leq M(M-1)/20NM(M1)/2):运输段数量
  • PPP0≤P≤100 \leq P \leq 100P10):运输请求数量

第二行包含MMM个两个字母的仓库代码(大写字母),以空格分隔。

接下来NNN行,每行包含两个仓库代码,表示它们之间有直接运输段。

接下来PPP行,每行包含一个整数(货物大小)和两个仓库代码(始发地和目的地)。

输出格式

第一行输出SHIPPING ROUTES OUTPUT。对于每个数据集,输出DATA SET X标题,然后PPP行结果($costNO SHIPMENT POSSIBLE)。最后一行输出END OF OUTPUT

样例输入

2 6 7 5 AA CC QR FF DD AB AA CC CC QR DD CC AA DD AA AB DD QR AB DD 5 AA AB 14 DD CC 1 CC DD 2 AA FF 13 AB QR 3 0 1 AA BB CC 5 AA CC

样例输出

SHIPPING ROUTES OUTPUT DATA SET 1 $500 $1400 $100 NO SHIPMENT POSSIBLE $2600 DATA SET 2 NO SHIPMENT POSSIBLE END OF OUTPUT

题目分析

问题的本质

这是一个图论最短路径问题。每个仓库是节点,运输段是边(权重为111)。需要回答多个查询:给定起点和终点,求最短路径长度(运输段数),然后计算运费。

算法选择

  • 节点数M≤30M \leq 30M30,可以使用Floyd-Warshall\texttt{Floyd-Warshall}Floyd-Warshall算法计算所有点对之间的最短路径
  • 时间复杂度O(M3)=27000O(M^3) = 27000O(M3)=27000,完全可行
  • 或对每个查询使用BFS\texttt{BFS}BFS,但P≤10P \leq 10P10MMM很小,两种方法均可

无连接处理

如果两点之间不可达,距离为无穷大,输出NO SHIPMENT POSSIBLE

运费计算

运费 = 货物大小 × 最短路径长度 ×100100100


参考代码

// Shippint Routes// UVa ID: 383// Verdict: Accepted// Submission Date: 2016-06-28// UVa Run Time: 0.000s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;constintMAX_LEGS=100000;// 无穷大intmain(intargc,char*argv[]){intdatasets=0,cases=0;cin>>datasets;cout<<"SHIPPING ROUTES OUTPUT"<<endl<<endl;while(datasets--){intM,N,P;cin>>M>>N>>P;// 仓库代码到索引的映射map<string,int>warehouses;for(inti=1;i<=M;i++){string codes;cin>>codes;warehouses[codes]=i;}// 初始化距离矩阵intlegs[M+1][M+1];for(inti=1;i<=M;i++){for(intj=1;j<=M;j++)legs[i][j]=MAX_LEGS;legs[i][i]=0;}// 读取边(运输段)for(inti=1;i<=N;i++){string start,next;cin>>start>>next;legs[warehouses[start]][warehouses[next]]=1;legs[warehouses[next]][warehouses[start]]=1;}// Floyd-Warshall 计算所有点对最短路径for(intk=1;k<=M;k++)for(inti=1;i<=M;i++)for(intj=1;j<=M;j++)if(legs[i][k]+legs[k][j]<legs[i][j])legs[i][j]=legs[i][k]+legs[k][j];cout<<"DATA SET "<<++cases<<endl<<endl;// 处理查询for(inti=1;i<=P;i++){intsize;string start,next;cin>>size>>start>>next;intdist=legs[warehouses[start]][warehouses[next]];if(dist>=MAX_LEGS){cout<<"NO SHIPMENT POSSIBLE"<<endl;continue;}cout<<"$"<<size*dist*100<<endl;}cout<<endl;}cout<<"END OF OUTPUT"<<endl;return0;}
http://www.jsqmd.com/news/951019/

相关文章:

  • 019、训练基础概念:Epoch Batch LearningRate Warmup EMA 的直观理解
  • 别再瞎试了!手把手教你用DC NXT的compile_ultra命令搞定物理综合(附完整脚本)
  • Java实现报价分级算法,上门回收预约+闲置商品上架全链路后端开发实战
  • 如何用智能视频分析工具将数小时视频压缩为5分钟可读报告
  • 年度必看!2026AI论文写作软件榜单(覆盖 99% 毕业论文需求)
  • 抖音批量下载终极指南:如何免费获取无水印高清视频
  • 计算机毕业设计之基于大数据的中医药传承平台的构建
  • 保姆级教程:在Ubuntu 22.04上编译COLMAP 3.9,附赠6个常见编译错误的解决方案
  • 2026年 北京烘焙培训推荐榜单:家庭私房/摆摊甜品/专业裱花奶油蛋糕与日式面包综合口碑优选 - 品牌企业推荐师(官方)
  • 高性价比广告标识工厂怎么选?2026 省钱选型实用指南 - GrowthUME
  • 开源IT资产管理系统Snipe-IT:如何三步解决企业资产管理难题
  • UltraStar Deluxe:从零开始打造你的开源卡拉OK娱乐中心
  • 高效下载抖音视频:douyin-downloader完整实用指南
  • League Akari:英雄联盟玩家的智能本地化助手,彻底改变你的游戏体验
  • 什么是穿越机?从“空中F1”到沉浸式飞行的终极体验
  • 从零搭建可信AI评估中台:基于NIST AI RMF v1.1的9模块实施路线图(含源码级配置清单)
  • 2026 年 6 月社区工作者备考神器实测:真题面试双突破 - 讲清楚了
  • 航空复合纤维材料专用切割磨床厂家推荐:谁家能解决分层起毛的问题? - 资讯纵览
  • 计算机毕业设计之基于爬虫技术的电影推荐系统设计与实现
  • 2026年10款精选论文AI智能降重工具实测:消AIGC特征实战对比实用指南 - 降AI小能手
  • 5分钟快速上手UltraStar Deluxe:开启你的跨平台卡拉OK派对体验
  • 终极文档下载解决方案:kill-doc 轻松获取全网免费文档资源
  • AI工具如何真正驱动智能资产增值:3个被90%企业忽略的集成关键指标
  • MATLAB自动计算平行泊车安全起始位置范围并绘图
  • 03、退格字符的比较
  • 保姆级教程:在Nvidia Jetson Orin(Ubuntu 20.04)上搞定NoMachine远程桌面,含网络配置与开机自启
  • 2026多联机口碑榜:选购必看的六大核心维度 - 资讯纵览
  • 2026 青岛黄金回收靠谱商家推荐|铂金白银 K 金金条首饰回收价格与门店指南 - 同城好物推荐官
  • 空铁复合网络的复杂性及联运网络设计方案【附代码】
  • D2DX终极指南:让暗黑破坏神2在现代PC上重获新生的完整解决方案