最小生成树 多点连边(2024CCPC 山东省赛 J)

//这题型似乎从前在图论里面做过类似的。也是很多点,求最小生成树,则先生成一颗,其它点连最小边即可。

看一下题目:


原题链接:

Problem - J - Codeforces

J. Colorful Spanning Tree

time limit per test

2 seconds

memory limit per test

1024 megabytes

BaoBao has many colored vertices. The colors are numbered from 11 to nn (both inclusive), and there are aiai vertices of color ii. As BaoBao has just learnt the minimum spanning tree problem in his algorithm class, he decides to practice it with the vertices.

Each pair of vertices is connected by an weighted edge. The weight of each edge is only related to the colors of its two endpoints. More precisely, let cucu be the color of vertex uu, if an edge connects vertices uu and vv, its weight will be bcu,cvbcu,cv.

Help BaoBao calculate the total weight of the minimum spanning tree of the graph.

Recall that a minimum spanning tree is a subset of the edges in a connected, weighted graph that connects all the vertices without any cycles and with the minimum possible total weight.

Input

There are multiple test cases. The first line of the input contains an integer TT indicating the number of test cases. For each test case:

The first line contains an integer nn (1≤n≤1031≤n≤103) indicating the number of different colors.

The second line contains nn integers a1,a2,⋯,ana1,a2,⋯,an (1≤ai≤1061≤ai≤106), where aiai is the number of vertices with color ii.

For the following nn lines, the ii-th line contains nn integers bi,1,bi,2,⋯,bi,nbi,1,bi,2,⋯,bi,n (1≤bi,j≤1061≤bi,j≤106) where bi,jbi,j is the weight of an edge connecting two vertices with color ii and jj. It's guaranteed that bi,j=bj,ibi,j=bj,i for all 1≤i,j≤n1≤i,j≤n.

It's guaranteed that the sum of nn over all the test cases doesn't exceed 103103.

Output

For each test case, output one line containing one integer, indicating the total weight of the minimum spanning tree.


这题其实挺裸的哦,都告诉你是最小生成树了,其实只要多写点题目就能会的。但当时考的时候就一直在想这么多边怎么连,一点没想到正解。。。

正解:有很多点,且每两个点之间就可以有一条边,这是题目大前提。那么这种题肯定不能每条边都加。我们寻思,每个点其实都有一个最小出边(到另一个序号的点)。所以在连通的情况下,这个点只要连最小出边就好啦(连到树上就好)。所以我们的做法就是假设每个颜色的点只有一个,把这些点求个最小生成树,每个颜色的其它点连最小出边即可。

代码:

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define int long long int t;
int n;
struct EDGE{int u,v,l;
}edge[1000010];
int a[1000010],fa[1000010],minl[1000010];void init(int n){for(int i=1;i<=n;i++){fa[i]=i;}
}int find(int i){if(fa[i]==i){return fa[i];}fa[i]=find(fa[i]);return fa[i];
}bool sorrt(struct EDGE i,struct EDGE j){return i.l<j.l;
}void solve(int n){memset(minl,0x3f,sizeof minl);for(int i=1;i<=n;i++){cin >> a[i];}init(n);int tot=0;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){edge[tot].u=i;edge[tot].v=j;cin>>edge[tot].l;minl[i]=min(minl[i],edge[tot].l);tot++;}}sort(edge,edge+tot,sorrt);int ans=0;for(int i=0;i<tot;i++){int fa_u=find(edge[i].u),fa_v=find(edge[i].v);if(fa_u!=fa_v){fa[fa_u]=fa_v;ans+=edge[i].l;}}for(int i=1;i<=n;i++){a[i]--;if(a[i]){ans+=a[i]*minl[i];}}cout<<ans<<endl;
}signed main()
{cin>>t;while(t--){cin>>n;solve(n);}return 0;
}

这题真的挺裸了啊,还是做不起来。。。下次要打嘴。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【星汇极客】手把手教学STM32 HAL库+FreeRTOS之创建任务(1-1)

前言 本人是一名嵌入式学习者&#xff0c;在大学期间也参加了不少的竞赛并获奖&#xff0c;包括但不限于&#xff1a;江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三。 后面会经常写一下博客&…

WSL2Linux 子系统(十二)

wsl 子系统安装 cuda 环境 《WSL2Linux 子系统(十一)》讲述 WSL 网络转为桥接模式的两种方法&#xff0c;WSL 网络桥接模式无论是静态 IP 还是动态分配 IP 均支持。本篇文章则是简单讲述 WSL 安装 cuda 环境。 作者&#xff1a;炭烤毛蛋 &#xff0c;点击博主了解更多。 提示…

四、逻辑架构

文章目录 1. 逻辑架构剖析1.1 服务器处理客户端请求1.2 Connectors1.3 第1层&#xff1a;连接层1.4 第2层&#xff1a;服务层1.5 第3层&#xff1a;引擎层1.6 存储层1.7 小结 2. SQL执行流程2.1 MySQL 中的 SQL执行流程2.2 MySQL8中SQL执行原理2.3 MySQL5.7中SQL执行原理2.4 SQ…

Mysql知识体系总结梳理

mysql事务的四大特性 原子性&#xff08;Atomicity&#xff09; 原子性确保事务中的所有操作要么全部完成&#xff0c;要么全部不完成。事务是一个不可分割的最小工作单元。 例子&#xff1a;假设有一个银行转账操作&#xff0c;事务包括从账户A中扣钱和向账户B中加钱。如果…

探索Prompt Engineering:开启大型语言模型潜力的钥匙

前言 什么是Prompt&#xff1f;Prompt Engineering? Prompt可以理解为向语言模型提出的问题或者指令&#xff0c;它是激发模型产生特定类型响应的“触发器”。 Prompt Engineering&#xff0c;即提示工程&#xff0c;是近年来随着大型语言模型&#xff08;LLM&#xff0c;Larg…

C++ struct和class的异同、C中和C++中struct的异同

一、前言 C中的struct结构体和C语言中的struct结构体差异较大。C中的struct结构体和C中的class类极为相似。 二、C的struct和class 1.相同点 &#xff08;1&#xff09;成员 struct和class都可以在主体中定义成员变量和成员函数&#xff01;两者在定义成员变量和成员函数上的…

java中的多层循环控制,包括金字塔和九九乘法表的打印

多重循环控制 多重循环控制练习 多重循环控制 1.将一个循环放在另一个循环体内&#xff0c;就形成了嵌套循环。其中&#xff0c;for&#xff0c;while&#xff0c;do…while均可以作为外层循环和内层循环。【建议一般用两层&#xff0c;最多不要超过3层&#xff0c;否则代码的…

管道内裂缝检测数据集 2000张 管道裂缝 带标注voc yol

管道内裂缝检测数据集 2000张 管道裂缝 带标注voc yol 管道内裂缝检测数据集 (Pipeline Crack Detection Dataset) 数据集概述 该数据集是一个专门用于训练和评估管道内裂缝检测模型的数据集。数据集包含2000张图像&#xff0c;每张图像都带有标注信息&#xff0c;标注格式为…

SimpleRR简洁双栏typecho主题模板

SimpleRR 使用原生 HTML CSS JS 构建。 设置文章封面 准备一张封面图&#xff0c;图片格式为 PNG 。推荐分辨率为 710 x 284px &#xff08;封面图最大展示尺寸&#xff09;。将图片重命名为 cover.png&#xff08;可在设置中自定义&#xff09;将图片上传至文章的“附件”…

【JavaEE】——文件IO的应用

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;文件的搜索&#xff08;面试高频&#xff09; 二&#xff1a;文件的复制 三&#xff1a…

ElasticSearch 备考 -- Snapshot Restore

一、题目 备份集群下的索引 task&#xff0c;存储快照名称为 snapshot_1 二、思考 这个涉及的是集群的备份&#xff0c;主要是通过创建快照&#xff0c;涉及到以下2步骤 Setp1&#xff1a;注册一个备份 snapshot repository Setp2&#xff1a;创建 snapshot 可以通过两种方…

InnoDB 磁盘结构 - Binlog

文章目录 binlog 的格式mysqbinlog 工具SHOW binlog events;binlog 和 redo log 对比 https://dev.mysql.com/doc/refman/8.4/en/binary-log.html binlog 全称 BinaryLog&#xff0c;是 MySQL 数据库中用于记录所有更改数据库状态的事件的日志文件。它主要用于以下几个目的&am…

分析JS Crash(进程崩溃)

一、JS Crash异常检测能力 1、JS Crash日志规格 以下是进程崩溃日志信息中对应字段解释。 Build info:XXX-XXXX X.X.X.XX(XXXXXXXX) <- 版本信息 Module name:com.example.myapplication <- 模块名 Version:1.0.0 <- 版本号 Pid:579 <- 进程号 Uid:0 <- 用户ID…

水凝胶发生器,不对称设计妙,医电应用前景广

大家好&#xff01;今天来了解一种具有工程机械离子不对称性的水凝胶发生器——《A high-current hydrogel generator with engineered mechanoionic asymmetry》发表于《Nature Communications》。嘿&#xff01;你能想象一种材料&#xff0c;它能像魔法一样在低频运动下产生高…

AI 写作工具汇总

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏AI_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 前言: 正文: ​ 前言: 在信息时代的浪潮中&#xff0c;AI 写作应运而生。它以强大的算法和海量的数据为支撑&…

人工智能时代中,产品经理的生存指南

前言 从AI技术到商业变现的过程中&#xff0c;一招不慎&#xff0c;很可能满盘皆输。在AI时代&#xff0c;一个优秀的产品经理&#xff0c;应该具备哪些能力呢&#xff1f;通过对人工智能产品生命周期的解读&#xff0c;明确在各个环节中&#xff0c;人工智能所需要承担的工作…

大厂出来的人为什么不比你高效?

在最近参加的一个线下聚会上&#xff0c;有人问我&#xff1a;“我们单位有来自阿里、腾讯、华为这些大厂的人&#xff0c;为什么我没觉得他们做事比我们这些没大厂经历的人更有章法和效率&#xff1f;”你别说&#xff0c;这一问所反映的现象&#xff0c;与我在阿里巴巴工作时…

Cisco Catalyst 9000 交换产品系列 IOS XE 17.15.1 发布下载,新增功能概览

Cisco Catalyst 9000 Series Switches, IOS XE Release 17.15.1 ED 思科 Catalyst 9000 交换产品系列 IOS XE 系统软件 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-catalyst-9000/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&…

【2024年最新】基于springboot+vue的点餐平台网站lw+ppt

作者&#xff1a;计算机搬砖家 开发技术&#xff1a;SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;Java精选实战项…

Python+Django预约管理系统

程序示例精选 PythonDjango预约管理系统 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonDjango预约管理系统》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习…