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

《P1550 [USACO08OCT] Watering Hole G》

题目描述

Farmer John 的农场缺水了。

他决定将水引入到他的 n 个农场。他准备通过挖若干井,并在各块田中修筑水道来连通各块田地以供水。在第 i 号田中挖一口井需要花费 Wi​ 元。连接 i 号田与 j 号田需要 Pi,j​(Pj,i​=Pi,j​)元。

请求出 FJ 需要为使所有农场都与有水的农场相连或拥有水井所需要的最少钱数。

输入格式

第一行为一个整数 n。

接下来 n 行,每行一个整数 Wi​。

接下来 n 行,每行 n 个整数,第 i 行的第 j 个数表示连接 i 号田和 j 号田需要的费用 Pi,j​。

输出格式

输出最小开销。

输入输出样例

输入 #1复制

4
5
4
4
3
0 2 2 2
2 0 3 3
2 3 0 4
2 3 4 0

输出 #1复制

9

说明/提示

对于 100% 的数据,1≤n≤300,1≤Wi​≤105,0≤Pi,j​≤105。

代码实现:

#include <iostream>
#include <vector>
#include <climits>
using namespace std;

const int MAXN = 305;
const int INF = INT_MAX;

int n;
int w[MAXN];               // 挖井成本
int p[MAXN][MAXN];         // 连接成本
int dist[MAXN];            // 距离数组,用于Prim算法
bool visited[MAXN];        // 标记节点是否已访问

int main() {
cin >> n;

// 读取挖井成本
for (int i = 1; i <= n; i++) {
cin >> w[i];
}

// 读取连接成本
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> p[i][j];
}
}

// 初始化距离数组,将挖井成本视为连接到虚拟节点0的成本
for (int i = 1; i <= n; i++) {
dist[i] = w[i];
visited[i] = false;
}

int result = 0;
// Prim算法构建最小生成树
for (int i = 1; i <= n; i++) {
// 找到未访问节点中距离最小的
int min_dist = INF;
int u = -1;
for (int j = 1; j <= n; j++) {
if (!visited[j] && dist[j] < min_dist) {
min_dist = dist[j];
u = j;
}
}

if (u == -1) break;  // 所有节点都已访问

visited[u] = true;
result += min_dist;

// 更新与u相邻节点的距离
for (int v = 1; v <= n; v++) {
if (!visited[v] && p[u][v] < dist[v]) {
dist[v] = p[u][v];
}
}
}

cout << result << endl;

return 0;
}

http://www.dtcms.com/a/339709.html

相关文章:

  • Java开发过程中实用的技术点(一)
  • 【矢量数据】1:250w中国地质图地断层数据/岩性shp数据
  • FlashAttention编译错误
  • Docker 搭建私有镜像仓库
  • 【C++】 C++11 智能指针
  • AI因子模型视角下的本周五鲍威尔演讲:通胀约束与就业压力的政策博弈
  • Spring Cloud系列—Seata分布式事务解决方案AT模式
  • 2025年6月中国电子学会青少年软件编程(图形化)等级考试试卷(一级)答案 + 解析
  • 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET... 拒绝访问
  • Linux管道
  • NVIDIA 优化框架:Jetson 平台 PyTorch 安装指南
  • 初步学习WPF-Prism
  • 图论\dp 两题
  • GIS相关调研
  • Meta首款AR眼镜Hypernova呼之欲出,苹果/微美全息投入显著抢滩市场新增长点!
  • MyBatis-Plus基础篇详解
  • HashMap工作原理
  • 使用Tomcat Clustering和Redis Session Manager实现Session共享
  • 设备树下的LED驱动实验
  • 【机器人】2025年人形机器人时代:伦理迷雾中的人类界限
  • PAT 1072 Gas Station
  • visionpro获取电脑cpu序列号
  • 生信分析自学攻略 | R语言数据类型和数据结构
  • 矿物分类系统开发笔记(二):模型训练[删除空缺行]
  • leetcode2248. 多个数组求交集
  • ES支持哪些数据类型,和MySQL之间的映射关系是怎么样的?
  • Vue3 学习教程,从入门到精通,vue3综合案例:“豪华版”待办事项(41)
  • [Polly智能维护网络] 网络重试原理 | 弹性策略
  • PyTorch数据处理工具箱(utils.data简介)
  • UE5 PCG 笔记(一)