acwing算法提高之图论--最小生成树的扩展应用

目录

  • 1 介绍
  • 2 训练

1 介绍

本专题用来记录使用最小生成树算法(prim或kruskal)解决的扩展题目。

2 训练

题目1:1146新的开始

C++代码如下,

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 310, INF = 0x3f3f3f3f3;
int n, m;
int g[N][N];
int d[N];
bool st[N];void prim() {memset(d, 0x3f, sizeof d);int res = 0;for (int i = 0; i < n + 1; ++i) {int t = -1;for (int j = 0; j <= n; ++j) {if (!st[j] && (t == -1 || d[t] > d[j])) {t = j;}}st[t] = true;if (i) res += d[t];for (int j = 0; j <= n; ++j) {if (d[j] > g[t][j]) {d[j] = g[t][j];}}}cout << res << endl;return;
}int main() {cin >> n;memset(g, 0, sizeof g);for (int i = 1; i <= n; ++i) {int t;cin >> t;g[0][i] = t;g[i][0] = t;}for (int i = 1; i <= n; ++i) {for (int j = 1; j <= n; ++j) {cin >> g[i][j];}}prim();return 0;   
}

题目2:1145北极通讯网络

C++代码如下,

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>using namespace std;typedef pair<int, int> PII;const int N = 510, M = N * N;
int n, k;
vector<PII> points;
int p[N];struct Edge {int a, b;double w;bool operator< (const Edge &W) const {return w < W.w;}
}edges[M];int find(int x) {if (p[x] != x) p[x] = find(p[x]);return p[x];
}double compute_dis(int i, int j) {int x1 = points[i].first, y1 = points[i].second;int x2 = points[j].first, y2 = points[j].second;double d = double(x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);d = sqrt(d);return d;
}int main() {cin >> n >> k;for (int i = 0; i < n; ++i) {int x, y;cin >> x >> y;points.emplace_back(x,y);}for (int i = 0; i < n; ++i) p[i] = i;int m = 0;for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {double w = compute_dis(i, j);edges[m] = {i, j, w};m += 1;}}sort(edges, edges + m);double res = 0.0;int cnt = n; //连通块的个数for (int i = 0; i < m; ++i) {int a = edges[i].a, b = edges[i].b;double w = edges[i].w;a = find(a);b = find(b);if (cnt == k) {break;}if (a != b) {p[a] = b;cnt--;res = w;}}printf("%.2lf\n", res);return 0;
}

题目3:346走廊泼水节

C++代码如下,

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 6010;
int n, m;
int p[N], ms[N];
struct Edge {int a, b, w;bool operator< (const Edge &W) const {return w < W.w;}
}edges[N];int find(int x) {if (p[x] != x) p[x] = find(p[x]);return p[x];
}int main() {int T;cin >> T;while (T--) {cin >> n;for (int i = 0; i < n - 1; ++i) {cin >> edges[i].a >> edges[i].b >> edges[i].w;}for (int i = 1; i <= n; ++i) p[i] = i, ms[i] = 1;sort(edges, edges + n - 1);int res = 0;for (int i = 0; i < n - 1; ++i) {int a = edges[i].a, b = edges[i].b, w = edges[i].w;a = find(a);b = find(b);if (a != b) {res += (ms[a] * ms[b] - 1) * (w + 1);p[a] = b;ms[b] += ms[a];}}cout << res << endl;}return 0;
}

题目4:1148秘密的牛奶运输

C++代码如下,

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;typedef long long LL;const int N = 510, M = 10010;
int n, m;
struct Edge {int a, b, w;bool f;bool operator< (const Edge &W) const {return w < W.w;}
}edges[M];
int p[N];
int dist1[N][N], dist2[N][N];
int h[N], e[N * 2], w[N * 2], ne[N * 2], idx;void add(int a, int b, int c) {e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}int find(int x) {if (p[x] != x) p[x] = find(p[x]);return p[x];
}void dfs(int u, int fa, int maxd1, int maxd2, int d1[], int d2[]) {d1[u] = maxd1, d2[u] = maxd2;for (int i = h[u]; ~i; i = ne[i]) {int j = e[i];if (j != fa) {int td1 = maxd1, td2 = maxd2;if (w[i] > td1) td2 = td1, td1 = w[i];else if (w[i] < td1 && w[i] > td2) td2 = w[i];dfs(j, u, td1, td2, d1, d2);}}return;
}int main() {scanf("%d%d", &n, &m);memset(h, -1, sizeof h);for (int i = 0; i < m; ++i) {int a, b, w;scanf("%d%d%d", &a, &b, &w);edges[i] = {a, b, w};}sort(edges, edges + m);for (int i = 1; i <= n; ++i) p[i] = i;LL sum = 0;for (int i = 0; i < m; ++i) {int a = edges[i].a, b = edges[i].b, w = edges[i].w;int pa = find(a), pb = find(b);if (pa != pb) {p[pa] = pb;sum += w;add(a, b, w), add(b, a, w);edges[i].f = true;}}for (int i = 1; i <= n; ++i) dfs(i, -1, -1e9, -1e9, dist1[i], dist2[i]);LL res = 1e18;for (int i = 0; i < m; ++i) {if (!edges[i].f) {int a = edges[i].a, b = edges[i].b, w = edges[i].w;LL t;if (w > dist1[a][b]) {t = sum + w - dist1[a][b];} else if (w > dist2[a][b]) {t = sum + w - dist2[a][b];}res=  min(res, t);}}printf("%lld\n", res);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/790677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter中setState函数的使用注意事项

文章目录 Flutter中setState函数的使用注意事项只能在具有State对象的类中使用不要在build方法中使用将状态更新逻辑放在setState方法内部避免频繁调用使用回调函数更新状态 Flutter中setState函数的使用注意事项 setState()函数是Flutter中非常重要的一个函数&#xff0c;它用…

C#使用Selenium驱动Chrome浏览器

1.Selenium库依赖安装 Selenium WebDriver是Selenium项目的一部分&#xff0c;用于模拟用户在Web应用程序中的交互操作。它支持多种浏览器&#xff0c;如Chrome、Firefox、IE等&#xff0c;且与各种编程语言&#xff08;如Java、Python、C#等&#xff09;兼容&#xff0c;具有…

运用抽象工厂模式实现多个产品族的独立创建与组合管理

抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09; 是一种软件设计模式&#xff0c;属于创建型设计模式类别&#xff0c;主要用于处理对象的创建过程&#xff0c;特别是在应对具有多个相关或相互依赖对象的特定上下文时。该模式的主要目的是将一组相关或者相互依赖…

SpringMvc处理器方法的返回值

1、返回ModelAndView ModelAndView中的视图会经过你视图解析器处理得到真实的jsp文件页面并且跳转。 RequestMapping("test01")public ModelAndView test01() {ModelAndView mv new ModelAndView();// 携带数据mv.addObject("teamName", "牛逼&quo…

AI绘图:Controlnet在ComfyUI中的使用教程:提升Stable Diffusion可控性

前言 Controlnet是Stable Diffusion中一个至关重要的功能&#xff0c;它极大地增强了图像生成的可控性。通过引入额外的条件&#xff0c;Controlnet使我们能够更精确地控制生成的图像内容。本教程将详细介绍如何在ComfyUI中使用Controlnet&#xff0c;从而让你的创作过程更加灵…

2012年认证杯SPSSPRO杯数学建模B题(第二阶段)节能减排全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 节能减排、抑制全球气候变暖 B题 白屋顶计划 原题再现&#xff1a; 第二阶段问题   虽然环境学家对地球环境温度的改变有许多种不同观点&#xff0c;但大多数科学家可以达成一个基本的共识&#xff1a;近年来人类的活动&#xff0c;尤指二氧…

云存储中常用的相同子策略的高效、安全的基于属性的访问控制的论文阅读

参考文献为2022年发表的Efficient and Secure Attribute-Based Access Control With Identical Sub-Policies Frequently Used in Cloud Storage 动机 ABE是实现在云存储中一种很好的访问控制手段&#xff0c;但是其本身的计算开销导致在实际场景中应用收到限制。本论文研究了…

ESP32学习---ESP-NOW(一)

ESP32学习---ESP-NOW&#xff08;一&#xff09; 官网简介arduino 官网简介 首先看官网的介绍&#xff1a;https://www.espressif.com.cn/zh-hans/solutions/low-power-solutions/esp-now ESP-NOW 是乐鑫定义的一种无线通信协议&#xff0c;能够在无路由器的情况下直接、快速…

【Java多线程(4)】案例:设计模式

目录 一、什么是设计模式&#xff1f; 二、单例模式 1. 饿汉模式 2. 懒汉模式 懒汉模式-第一次改进 懒汉模式-第二次改进 懒汉模式-第三次改进 一、什么是设计模式&#xff1f; 设计模式是针对软件设计中常见问题的通用解决方案。它们提供了一种被广泛接受的方法来解决…

5米分辨率数字高程模型(DEM)的制作

在现代科技的驱动下&#xff0c;地理信息系统&#xff08;GIS&#xff09;和遥感技术已经取得了惊人的进展。其中一项令人瞩目的技术就是5米分辨率数字高程模型&#xff08;DEM&#xff09;的制作&#xff0c;它是基于多颗高分辨率卫星数据为原始数据&#xff0c;借助智能立体模…

C语言编写Linux的Shell外壳

目录 一、输出命令行 1.1 了解环境变量 1.2 获取用户名、主机名、当前路径 1.3 缓冲区改进MakeCommandLine 二、获取用户命令 2.1 读取函数的选择 2.2 细节优化 2.3 返回值 三、指令和选项分割 3.1 strtok 函数 3.2 分割实现 四、执行命令 4.1 fork 方法 4.2 进…

0.17元的4位数码管驱动芯片AiP650,支持键盘,还是无锡国家集成电路设计中心某公司的

推荐原因&#xff1a;便宜的4位数码管驱动芯片 只要0.17元&#xff0c;香吗&#xff1f;X背景的哦。 2 线串口共阴极 8 段 4 位 LED 驱动控制/7*4 位键盘扫描专用电路 AIP650参考电路图 AIP650引脚定义

scratch小动物的晚会 2024年3月中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析

目录 scratch小动物的晚会 一、题目要求 1、准备工作 2、功能实现 二、案例分析

51单片机入门_江协科技_20.1_Proteus串口仿真

1.为了解决51单片机学习过程中在Proteus中的串口仿真的问题&#xff0c;需要在Proteus中建立串口仿真的环境&#xff08;目前Proteus安装在Win7x64虚拟机环境中&#xff1b; 2. 在CSDN中找到VSPD下载地址&#xff0c;在虚拟机中进行VSPD的安装&#xff0c;具体链接地址如下&am…

mac电脑下pip安装库后,仍然提示command not found

如&#xff1a;pip install httprunner&#xff0c;安装成功后输入hrun -V 提示“command not found”。 造成这个问题的原因是PATH环境变量的问题&#xff0c;因为使用的是homebrew安装的python&#xff0c;导致pip bin目录的环境变量没注册上。 解决办法是将python bin目录加…

HTML块级元素和内联元素(头部和布局)

目录 1.HTML块级和内联标签&#xff1a; 1.块级元素&#xff1a; 2.内联元素: 3.元素嵌套&#xff1a; 4.元素转换&#xff1a; 示例如下: 2.内联框架&#xff1a; 前言&#xff1a; 示例如下: 3.布局&#xff1a; 4.头部标签&#xff1a; 前言&#xff1a; 说明&…

【Elasticsearch配置秘籍】详解config/elasticsearch.yml,解锁关键参数与实战应用

Elasticsearch的强大性能与灵活性&#xff0c;很大程度上得益于其细致入微的配置选项。作为核心配置文件&#xff0c;config/elasticsearch.yml扮演着至关重要的角色。本文将深度剖析该文件中的重要参数&#xff0c;结合实例说明其作用与应用场景&#xff0c;助您定制最适合业务…

【蓝桥杯-Even Parity】

蓝桥杯-Even Parity 洛谷 UVA11464 Even Parity 暴力思路&#xff1a; 去遍历每个元素&#xff0c;如果不符合要求则翻转 时间复杂度大概在O&#xff08;2^&#xff08;nn&#xff09; nn&#xff09; 改进思路&#xff1a; 先去枚举确定第一行&#xff08;第一行得合法&…

反截屏控制技术对于防止数据外泄都有哪些具体作用?

反截屏控制技术在防止数据外泄方面具有以下具体作用&#xff1a; 智能反截屏技术&#xff1a; 当用户启动截屏操作时&#xff0c;并只有非涉密内容被截屏&#xff0c;所有涉密窗口自动隐藏&#xff0c;防止涉密内容被截屏。这一技术普遍支持目前市面上的各种截屏操作&#xff0…

Apache ECharts-数据统计(详解、入门案例)

简介&#xff1a;Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 1、介绍 图 1.1 Apache ECharts 功能、运行环境 功能&#xff1a; ECharts&#xff…