news 2026/6/21 4:48:20

UVa 544 Heavy Cargo

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVa 544 Heavy Cargo

题目描述

题目要求在一个无向图中,找到从起点到终点的路径,使得路径上的最小边权最大(即最大化最小承载重量)。输出这个最大承载重量。

输入格式

每个测试用例第一行包含两个整数nnn2≤n≤2002 \le n \le 2002n200)和rrr1≤r≤199001 \le r \le 199001r19900)。接下来rrr行,每行两个城市名和一个整数权值(道路承载量)。最后一行两个城市名,表示起点和终点。输入以0 0结束。

输出格式

对于每个测试用例,输出Scenario #x,然后输出最大承载重量,后跟tons,最后输出一个空行。

样例

输入

4 3 Karlsruhe Stuttgart 100 Stuttgart Ulm 80 Ulm Muenchen 120 Karlsruhe Muenchen 5 5 Karlsruhe Stuttgart 100 Stuttgart Ulm 80 Ulm Muenchen 120 Karlsruhe Hamburg 220 Hamburg Muenchen 170 Muenchen Karlsruhe 0 0

输出

Scenario #1 80 tons Scenario #2 170 tons

题目分析

本题的核心是求解“最大瓶颈路径”,即最大化路径上的最小边权。可以使用类似Floyd-Warshall\texttt{Floyd-Warshall}Floyd-Warshall的变体或最大生成树(Maximum Spanning Tree\texttt{Maximum Spanning Tree}Maximum Spanning Tree)求解。

算法

  • 初始时,weight[i][j]\textit{weight}[i][j]weight[i][j]表示iiijjj的直接边权,若没有边则为000
  • 对于每个中间点kkk,更新:
    weight[i][j]=max⁡(weight[i][j],min⁡(weight[i][k],weight[k][j])) \textit{weight}[i][j] = \max(\textit{weight}[i][j], \min(\textit{weight}[i][k], \textit{weight}[k][j]))weight[i][j]=max(weight[i][j],min(weight[i][k],weight[k][j]))
  • 最终weight[start][end]\textit{weight}[start][end]weight[start][end]即为答案。

复杂度分析

n≤200n \le 200n200Floyd-Warshall\texttt{Floyd-Warshall}Floyd-WarshallO(n3)=8×106O(n^3) = 8 \times 10^6O(n3)=8×106,可接受。

代码实现

// Heavy Cargo// UVa ID: 544// Verdict: Accepted// Submission Date: 2016-08-10// UVa Run Time: 0.000s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intmain(intargc,char*argv[]){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);intn,r,weight[201][201],cases=0;while(cin>>n>>r,n&&r){map<string,int>cities;string start,end;inttons,count=1;for(inti=1;i<=n;i++)for(intj=1;j<=n;j++)weight[i][j]=weight[j][i]=-1;for(inti=1;i<=r;i++){cin>>start>>end>>tons;if(cities.find(start)==cities.end())cities[start]=count++;if(cities.find(end)==cities.end())cities[end]=count++;if(tons>weight[cities[start]][cities[end]]){weight[cities[start]][cities[end]]=tons;weight[cities[end]][cities[start]]=tons;}}for(intk=1;k<=n;k++)for(inti=1;i<=n;i++)for(intj=1;j<=n;j++)if(weight[i][k]!=-1&&weight[k][j]!=-1)weight[i][j]=max(weight[i][j],min(weight[i][k],weight[k][j]));cin>>start>>end;cout<<"Scenario #"<<++cases<<'\n';cout<<weight[cities[start]][cities[end]]<<" tons\n\n";}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 4:36:47

零基础AI策划工作流:5分钟生成合规商业活动方案

1. 先说清楚&#xff1a;GPT-5.5 并不存在&#xff0c;但这个标题背后藏着真实痛点与可行路径 “零基础策划&#xff1a;如何用 GPT-5.5 在 5 分钟内写出商业活动策划案&#xff1f;&#xff08;附大模型选型表&#xff09;”——这个标题在社交平台刷屏时&#xff0c;我正帮一…

作者头像 李华
网站建设 2026/6/21 4:29:18

M68HC08电机控制SDK:从硬件抽象到工业级代码的嵌入式开发实践

1. 项目概述如果你正在用M68HC08这类8位单片机做电机控制&#xff0c;或者任何需要精细外设管理的嵌入式项目&#xff0c;那你肯定遇到过这样的困境&#xff1a;面对密密麻麻的寄存器手册&#xff0c;一遍遍地写底层配置代码&#xff0c;调试时一个时序问题就能卡住好几天。更头…

作者头像 李华
网站建设 2026/6/21 4:26:47

OpenClaw AI Agent工程化实战:5分钟部署+10个生产级Skill+安全防护闭环

1. 项目概述&#xff1a;这不是一个“安装包”&#xff0c;而是一套可落地的AI Agent工程化工作流OpenClaw这个名字&#xff0c;最近半年在技术圈里出现的频率越来越高&#xff0c;但很多人点开GitHub仓库第一眼看到README.md里密密麻麻的Docker Compose、Railway链接、Skill Y…

作者头像 李华
网站建设 2026/6/21 4:25:33

鸣潮自动化终极指南:如何用智能工具解放你的游戏时间

鸣潮自动化终极指南&#xff1a;如何用智能工具解放你的游戏时间 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否每天花费数…

作者头像 李华
网站建设 2026/6/21 4:18:45

Flexbox布局中的box-shadow偏移问题与解决方案

在前端开发中,Flexbox是一个非常强大且灵活的布局工具,尤其在处理复杂的网格系统时。然而,有时我们会遇到一些细微的问题,比如输入框在动态调整布局时,其box-shadow出现偏移的情况。本文将详细探讨这种现象的成因,并提供解决方案。 问题描述 假设我们有一个基于Flexbox…

作者头像 李华
网站建设 2026/6/21 4:13:09

Java OOP实战:从支付多态到不可变封装的工程落地

1. 这不是教科书里的OOP&#xff0c;是我在带三个Java项目组时每天真正在用的那套东西“OOP Concepts in Java: Examples and Tutorial”——看到这个标题&#xff0c;你脑子里是不是立刻浮现出四块板子&#xff1a;封装、继承、多态、抽象&#xff1f;然后是UML图、Student类、…

作者头像 李华