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

C++课后习题训练记录Day148

1.练习项目 :

问题描述

蓝桥公司招聘了一个推销员。他大部分时间都在不同的城市之间旅行。他决定买一辆新车来帮助他的工作,但他必须决定新车油箱的容量。假设这辆新车每公里耗油一升。

每个城市至少有一个加油站,推销员可以在那里给油箱加油,但城市之间的道路上没有加油站。 给出城市及其之间道路的描述,找出所需油箱的最小容量,以便推销员能够至少以一种方式在任何一对城市之间旅行。

输入格式

输入的第一行包含表示测试用例数的 T。

每个测试用例的第一行包含两个整数:N 和 M ,其中 N 为城市数量,M 为道路数量。

以下 M 行都包含三个整数:X,Y,C,其中 C 是城市 X 和城市 Y 之间的长度,单位为公里。道路可以双向使用。

题目保证每对城市之间最多有一条道路相连,并且可以使用给定的道路在任意一对城市之间旅行。

输出格式

对于每个测试用例,打印一行整数表示油箱所需的最小容量。

2.选择课程

在蓝桥云课中选择题库,选择题号3322并开始练习。

3.开始练习

(1)Kruskal算法:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N=1e5+10,inf=1e9;

struct Edge{
ll x,y,c;
bool operator < (const Edge &u)const{
return c<u.c;
}
};

int pre[N],n,m;
int root(int x){return pre[x]=(pre[x]==x?x:root(pre[x]));}

int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--){
cin>>n>>m;
vector<Edge>es;
for(int i=1;i<=m;i++){
ll x,y,c;cin>>x>>y>>c;
es.push_back({x,y,c});
}

sort(es.begin(),es.end());
for(int i=1;i<=n;i++)pre[i]=i;
ll ans=0;
for(const auto&t:es){
ll x=t.x,y=t.y,c=t.c;
if(root(x)==root(y))continue;
ans=max(ans,c);
pre[root(x)]=root(y);
}
cout<<ans<<'\n';
}
return 0;
}

(2)Prim算法:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N=1e5+10,inf=1e9;

struct Edge{
ll x,c;
bool operator < (const Edge &u)const{
return c>u.c;
}
};

vector<Edge>g[N];
ll d[N],n,m;

ll prim()
{
priority_queue<Edge>pq;
pq.push({1,d[1]=0});
bitset<N>vis;
ll res=0;
while(pq.size()){
int x=pq.top().x;pq.pop();
if(vis[x])continue;
vis[x]=true;
res=max(res,d[x]);
for(const auto&t:g[x]){
ll y=t.x,w=t.c;
if(w<d[y])pq.push({y,d[y]=w});
}
}
return res;
}

int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--){
cin>>n>>m;
for(int i=1;i<=n;i++)g[i].clear(),d[i]=inf;
for(int i=1;i<=m;i++){
ll x,y,c;cin>>x>>y>>c;
g[x].push_back({y,c});
g[y].push_back({x,c});
}

cout<<prim()<<'\n';
}
return 0;
}

(3)检验结果

对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。

(4)练习心得:注意每段代码末尾的分号是否存在 ,如不存在则需即使补充;输入法 是否切换 为英语模式;语法是否错误。

http://www.gsyq.cn/news/1640395.html

相关文章:

  • 《欠你的那场婚礼》 台剧|在线观看|电视剧|夸克|下载|豆瓣
  • 少走弯路:2026年刚需首选的专业降AIGC软件
  • PIC18F4550单片机控制RGB灯带实现智能灯光效果
  • 让时间序列“开口说话”:TimechoAI 如何把工业数据变成安全可靠的智能洞察
  • MIAC部署指南:从源码编译到生产环境部署的完整流程
  • 大型系统设计面试题解
  • 数字控制振荡器(DCO)与STM32L4的精准频率控制方案
  • 工业安全装备检测数据集与YOLO模型实战指南
  • ONNX模型转换软件V1.0操作手册
  • 锚点的算术:拆解 RectTransform 背后的计算法则
  • MoE模型训练优化:LLEP算法与动态负载均衡技术
  • 如何用Java搭建一个高可用的微服务架构
  • 消息队列核心原理解析
  • 嵌入式EEPROM应用:M24256E与PIC18LF4525的工业级数据存储方案
  • 量子误差缓解技术在优化问题中的基准测试策略
  • 前端应用的离线暂停更新策略:构建稳定可靠的渐进式更新方案
  • SaltStack 运维实践:Python 原生架构与生产级最佳实践
  • LinkSwift:网盘直链下载助手技术深度解析与效率革命
  • BLDC300W24V 驱动器 PID 调参:麦轮小车 4 电机同步与遥控响应优化
  • 3D高斯渲染中的光线追踪优化与GRTX技术解析
  • MySQL表结构优化指南
  • 能量收集物联网设备动态OTA更新技术解析
  • PIC18LF45K22驱动WS2812 LED的嵌入式开发实践
  • 从零构建课堂行为分析系统:基于YOLO与MediaPipe的AI实践
  • 告别macOS高价!黑苹果Hackintosh:在普通PC上免费体验苹果系统的终极指南
  • Steam创意工坊下载终极指南:用WorkshopDL轻松获取1000+游戏模组
  • SHAP多模型解释性分析实战指南
  • TensorBoard实战指南:从本地到远程服务器,一站式可视化训练日志
  • YOLOv8目标检测实战:从核心原理到工程部署全流程解析
  • Cadence 17.4 Gerber 文件 12 层配置实战:从 Artwork 设置到钻孔文件导出