清华大学算法训练营 —— 道路升级

这篇博客介绍了如何使用Kruscal算法解决一个道路升级问题。Z国的n个城市和m条道路需要升级,目标是使所有城市通过最少数量的升级道路互相可达,并保持任意两点间最大载重量一致。文章提供了问题描述、输入输出格式,并给出了样例输入和输出。
摘要由CSDN通过智能技术生成

道路升级(Kruscal)

问题描述

Z国有 n 个城市和 m 条双向道路,每条道路连接了两个不同的城市,保证所有城市之间都可以通过这些道路互达。每条道路都有一个载重量限制,这限制了通过这条道路的货车最大的载重量。道路的编号从 1 至 m 。巧合的是,所有道路的载重量限制恰好都与其编号相同。

现在,要挑选出若干条道路,将它们升级成高速公路,并满足如下要求:

  • 所有城市之间都可以通过高速公路互达。
  • 对于任意两个城市 u,v 和足够聪明的货车司机:只经过高速公路从 u 到达 v 能够装载货物的最大重量,与经过任意道路从 u 到达 v 能够装载货物的最大重量相等。(足够聪明的司机只关注载重量,并不在意绕路)

在上面的前提下,要求选出的道路数目尽可能少

求需要挑选出哪些道路升级成高速公路(如果有多种方案请任意输出一种)。

简要题意

n个点和m条边,第i条边的边权为i,挑出一些边,满足:

  1. 任意两个点都是连通的
  2. 在所挑出边形成的图中,对于任意两个点,设两点之间所有路径所含的边的最大边权为maxEdge,则在原图中,对于任意两个点,两点之间所有路径所含的边的最大边权不大于maxEdge。
  3. 满足前两个条件的情况下,边最小。

输入

第一行 2 个用空格隔开的整数 n,m ,分别表示城市数目、道路数目。 ( 1 < n < 2 ∗ 1 0 5 ) (1<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值