最小生成树应用(超级源点)

ops/2024/11/20 23:53:19/

题目 2397: 

信息学奥赛一本通T1488-新的开始

时间限制: 2s 内存限制: 192MB 提交: 33 解决: 20

题目描述

发展采矿业当然首先得有矿井,小 F 花了上次探险获得的千分之一的财富请人在岛上挖了 n 口矿井,但他似乎忘记考虑的矿井供电问题……

为了保证电力的供应,小 F 想到了两种办法:

在这一口矿井上建立一个发电站,费用为 v(发电站的输出功率可以供给任意多个矿井)。

将这口矿井与另外的已经有电力供应的矿井之间建立电网,费用为 p。

小 F 希望身为「NewBe_One」计划首席工程师的你帮他想出一个保证所有矿井电力供应的最小花费。

输入格式

第一行一个整数 n,表示矿井总数。

第 2∼n+1行,每行一个整数,第 i 个数 vi 表示在第 i 口矿井上建立发电站的费用。

接下来为一个 n×n 的矩阵 p,其中 pi,j 表示在第 i 口矿井和第 j 口矿井之间建立电网的费用(数据保证有pi,j=pj,i ,且 pi,i=0。

输出格式

输出仅一个整数,表示让所有矿井获得充足电能的最小花费。

样例输入

复制

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

样例输出

复制

9

 思路:

一道经典题,看到超级源点应该就都反应过来了。

和城市建设那道题类似,不过这题更简单一点。

一般建码头,发电站这样的·,建立孤立点又可以影响其他点的题可以考虑超级源点。

​
#include<bits/stdc++.h>
using namespace std;
const int N = 310, M = 100100;
int p[N];
struct edge {int a, b, w;bool operator<(edge& W) {return w < W.w;}
}e[M];
int n;
int ans;
int find(int x) {if (x != p[x]) {p[x] = find(p[x]);}return p[x];
}
int main()
{cin >> n;for (int i = 1;i <= n;i++) {int v;cin >> v;e[i].a = i;e[i].b = 0;e[i].w = v;}int cnt = n;for (int i = 1;i <= n;i++) {for (int j = 1;j <= n;j++) {int v;cin >> v;if (j == i) {continue;}cnt++;e[cnt].a = i;e[cnt].b = j;e[cnt].w = v;}}sort(e + 1, e + cnt);for (int i = 1;i <= n;i++) {p[i] = i;}for (int i = 1;i <= cnt;i++) {int a = e[i].a;int b = e[i].b;int x = find(a);int y = find(b);if (x != y) {p[x] = y;ans += e[i].w;}}cout << ans;
}​


http://www.ppmy.cn/ops/135360.html

相关文章

网络协议之IP(包含V4和V6)

一、IPv4协议 1. 基本概念 IPv4&#xff08;Internet Protocol version 4&#xff09;&#xff0c;即互联网协议第4版&#xff0c;是网际协议开发过程中的第四个修订版本&#xff0c;也是此协议第一个被广泛部署的版本。IPv4使用32位&#xff08;4字节&#xff09;地址&#…

力扣(leetcode)题目总结——辅助栈篇

leetcode 经典题分类 链表数组字符串哈希表二分法双指针滑动窗口递归/回溯动态规划二叉树辅助栈 本系列专栏&#xff1a;点击进入 leetcode题目分类 关注走一波 前言&#xff1a;本系列文章初衷是为了按类别整理出力扣&#xff08;leetcode&#xff09;最经典题目&#xff0c…

分享一些关于 C 函数与 lua 交互的实际项目案例

游戏开发中的数据存储和配置读取 案例描述 在一个2D角色扮演游戏中&#xff0c;游戏的角色属性&#xff08;如生命值、攻击力、防御力等&#xff09;、物品属性&#xff08;如武器伤害、防具防御值等&#xff09;以及游戏场景中的各种参数&#xff08;如关卡难度系数、怪物刷新…

网络安全与CTF在线学习资源网站

http://www.sec-wiki.com/skill/ 安全技能(里面渗透逆向编程都有介绍) http://blog.knownsec.com/Knownsec_RD_Checklist/ 知道创宇研发技能表v3.0 综合学习平台&#xff1a; http://edu.gooann.com/ 谷安网校 http://www.jikexueyuan.com/ 极客学院 http://www.hetianlab.…

将 HTML 转换为 JSX:JSX 和 JSX 规则

JSX 是 JavaScript 的语法扩展。您可以在 JavaScript 文件中编写 HTML 格式。 它基于 Web、Html、Css 和 JavaScript。Web 开发人员将页面内容分别编写为 Html 文件&#xff0c;将设计编写为 Css 文件&#xff0c;将逻辑编写为 JavaScript 文件。 须知 &#xff1a; JSX 是一个…

跟我学C++中级篇——RAII

一、什么是RAII Resource Acquisition Is Initialization&#xff0c;资源获取即初始化。C/C的开发者都知道&#xff0c;在这类语言的开发中&#xff0c;内存需要手动来控制。也就是说&#xff0c;释放和回收内存得开发者亲历亲为。从某种角度看&#xff0c;能够把控内存的细节…

详解Rust的数据类型和语法

文章目录 基本数据类型复杂数据类型字符串基本语法 Rust是一种强调安全性和性能的系统编程语言。它的设计目标之一是防止内存安全错误同时提供丰富的功能和灵活的语法。下面介绍一下Rust语言的基本数据类型和语法。 基本数据类型 1.整数类型 有符号整数: i8, i16, i32, i64, i…

响应“一机两用”政策 落实政务外网安全

在数字化时代&#xff0c;政务办公外网安全的重要性日益凸显&#xff0c;特别是在“一机两用”的背景下&#xff0c;即同一台终端既要处理政务内网的数据&#xff0c;又要访问互联网&#xff0c;这对网络安全提出了更高的要求。深信达SPN安全上网方案&#xff0c;即反向沙箱技术…