【牛客 - 330G】Applese 的毒气炸弹(最小生成树,构造,判连通图)

题干:
 

众所周知,Applese 是个很强的选手,它的化学一定很好。


今天他又AK了一套题觉得很无聊,于是想做个毒气炸弹玩。

毒气炸弹需要 k 种不同类型元素构成,Applese一共有 n 瓶含有这些元素的试剂。

已知元素混合遵循 m 条规律,每一条规律都可以用 "x y c" 描述。

表示将第 x 瓶试剂混入第 y 瓶试剂或者把第 y 瓶试剂混入第 x 瓶试剂,需要消耗 c 的脑力。
 

特别地,除了这 m 条规律外,Applese 可以将任意两瓶相同元素的试剂混合,且不需要消耗脑力。

 

Applese 想要配出毒气炸弹,就需要使 S 中含有 1∼k1∼k 这 k 种元素。它想知道自己最少花费多少脑力可以把毒气炸弹做出来。

输入描述:

第一行为三个整数 n, m, k 表示 Applese 拥有的试剂的数量,混合规律的数量和所需的元素种类数。
第二行为 n 个整数 a1,a2,…,ana1,a2,…,an,分别表示每一瓶试剂的元素类型。
接下来m行,每行三个整数 x, y, c,含义如题目描述中所述。不保证 x, y的试剂种类不同。

输出描述:

输出一个正整数表示最小的耗费脑力。特别地,如果无法合成出毒气炸弹,输出 "-1"。

示例1

输入

复制

6 8 2
1 1 1 2 2 2
1 2 1
2 3 2
1 3 3
3 4 6
4 5 1
4 6 3
5 6 2
1 6 2

输出

复制

2

备注:

1≤n,k,m≤1051≤n,k,m≤105
1≤x,y≤n,x≠y1≤x,y≤n,x≠y
1≤c≤109

 

解题报告:

看成一张图,就是把同类元素的试剂当作一个点之后,求这个图的最小生成树就行了。注意判不连通的情况。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
struct Edge {int u,v;int c;Edge(){}Edge(int u,int v,int c):u(u),v(v),c(c){}bool operator<(const Edge b) const{return c < b.c;}
} e[MAX];
int tot;
int a[MAX];
int f[MAX];
int getf(int v) {return f[v] == v ? v : f[v] = getf(f[v]);
}
void merge(int u,int v) {int t1 = getf(u);int t2 = getf(v);f[t2] = t1;
}int main()
{int n,m,k;cin>>n>>m>>k;for(int i = 1; i<=k; i++) f[i] = i;for(int i = 1; i<=n; i++) cin>>a[i];for(int x,y,c,i = 1; i<=m; i++) {cin>>x>>y>>c;if(a[x] != a[y]) e[++tot] = {a[x],a[y],c};}sort(e+1,e+tot+1);ll ans = 0,cnt = 0;for(int u,v,i = 1; i<=tot; i++) {u = e[i].u;v = e[i].v;if(getf(u) == getf(v)) continue;cnt++;merge(u,v);ans += 1ll*e[i].c;if(cnt == k-1) break;}if(cnt != k-1) puts("-1");else printf("%lld\n",ans);return 0 ;}

 

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

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

相关文章

服务器风扇一直高速转系统起不来,【案例】别克君越风扇启动后一直高速常转 维修案例...

故障诊断启动车辆&#xff0c;冷车时风扇正常&#xff0c;当温度达到正常温度后&#xff0c;节温器打开风扇一直常转&#xff0c;客户描述的问题存在。目测检查发动机外观状态&#xff1a;无漏油、无移位、部件连接无松动、电气插头安装牢固、无异味、无过热现象&#xff0c;都…

添加一列_Joom平台CSV文件如何添加产品?CSV文件添加产品流程一览

CSV文件添加产品在添加产品及变型以前&#xff0c;请先了解产品的CSV文件介绍以及产品变型要求。CSV添加产品CSV文件中的一行对应一个产品变型。卖家想为产品添加变型的话&#xff0c;需要在表格里新添一行或多行信息。——列表第一行是产品基本信息及产品本身的信息。卖家需要…

【牛客 -330E 】Applese 涂颜色(费马小定理,超级快速幂)

题干&#xff1a; 精通程序设计的 Applese 叕写了一个游戏。 在这个游戏中&#xff0c;有一个 n 行 m 列的方阵。现在它要为这个方阵涂上黑白两种颜色。规定左右相邻两格的颜色不能相同。请你帮它统计一下有多少种涂色的方法。由于答案很大&#xff0c;你需要将答案对 10971…

四元数乘法_JPL四元数和Hamilton四元数的区别

四元数的定义&#xff1a; 1.顺序JPL: 实部在后 , Hamilton: 实部在前 , 2.坐标系JPL: 左手坐标系 Hamilton: 右手坐标系 3.坐标系的转换方向JPL: global-to-local 世界坐标系 --> 局部坐标系 , Hamilton: local-to-global 局部坐标系 --> 世界坐标系 , 4.四元数与旋…

【牛客 - 330I】Applese 的回文串(结论题,类似编辑距离,dp)

题干&#xff1a; 自从 Applese 学会了字符串之后&#xff0c;精通各种字符串算法&#xff0c;比如……判断一个字符串是不是回文串。 这样的题目未免让它觉得太无聊&#xff0c;于是它想到了一个新的问题。 如何判断一个字符串在任意位置(包括最前面和最后面)插入一个字符后…

【POJ - 2752】Seek the Name, Seek the Fame (KMP,公共前缀后缀长度及个数)

题干&#xff1a; The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names to their newly-born babies. They seek the name, and at the same time seek the fame. In order to escape from such b…

编码方式_【每日一题】| 常见的编码方式之栅栏密码

CTF_密码学栅栏密码点击上方蓝字 发现更多精彩01简介栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个字一组&#xff0c;然后把每组的第1个字符组合&#xff0c;每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合&#xff0c;最后把他们全部连接起来就是…

edp和edt哪个好_香水edp和edt是什么意思

香水adp和edt代表的是浓香水和淡香水&#xff0c;它们标识香水的持久度和浓度。每款香水都会给出这些相对应的参数。这些也代表的是水、酒精以及精油的比例。香水edp和edt是什么意思edp、edt以及parfum代表的都是香水的参数&#xff0c;edp和edt香水的浓度要稍微低一点&#xf…

【HDU - 3746 】Cyclic Nacklace (KMP,最小循环节问题)

题干&#xff1a; CC always becomes very depressed at the end of this month, he has checked his credit card yesterday, without any surprise, there are only 99.9 yuan left. he is too distressed and thinking about how to tide over the last days. Being inspir…

【POJ - 1961】Period(KMP,循环节问题)

题干&#xff1a; For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive), we want to know whether the prefix is a periodic string. That is, for each i (2 < i < N) we want to know the lar…

linux tomcat守护_linux下非root用户运行tomcat

# 前言&#xff1a;为什么要使用非root用户运行tomcatroot用户启动tomcat有一个严重的问题&#xff0c;那就是tomcat具有root权限。这意味着你的任何一个页面脚本(html/js)都具有root权限&#xff0c;所以可以轻易地用页面脚本 修改整个硬盘里的文件&#xff01;所以最好不要使…

【牛客 - 331E】炫酷划线(权值线段树,树状数组哈希,随机数)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/331/E 来源&#xff1a;牛客网 平面上有一个圆&#xff0c;圆环上按顺时针顺序分布着从1到n&#xff0c;一共n个点。 现在无聊的小希开始按某种顺序对其在圆内两两连线&#xff0c;小希尽量避免让两…

linux 判断网卡是否异常_如何判断linux网卡故障?

linux网卡的信息里错误和碰撞数值高是否说明网卡有问题还是网络有问题&#xff1f;如何判断网卡有没有问题&#xff1f;ifconfigeth0Linkencap:EthernetHWaddr52:51:AB:14:60:B8inetaddr:192.168.1.254Bcas...linux网卡的信息里错误和碰撞数值高是否说明网卡有问题还是网络有问…

autosar网络管理_AP AUTOSAR平台设计(11)——网络管理

点击蓝字右上角 关注置顶不迷路Hello&#xff01;大家好&#xff01;欢迎来到《搞一下汽车电子》本篇是AP AUTOSAR平台设计(11)——网络管理如果觉得不错&#xff0c;“转发” “ 在看”支持一下吧~1.网络管理算法概述AUTOSAR NM基于分散的网络管理策略&#xff0c;这意味…

【牛客 - 331D】炫酷路途(二进制枚举 或 建图方式+最短路 或 dfs)

题干&#xff1a; 小希现在要从寝室赶到机房&#xff0c;路途可以按距离分为N段&#xff0c;第i个和i1个是直接相连的&#xff0c;只需要一秒钟就可以相互到达。 炫酷的是&#xff0c;从第i个到第i2pi2p个也是直接相连的&#xff08;其中p为任意非负整数&#xff09;&#x…

mysql 子查询 as_mysql子查询

更多关于LeetCode习题总结请翻阅我的博客&#xff1a;LeetCode - mysql子查询【184. 部门工资最高的员工】子查询一、按查询结果分类&#xff1a;1.作为数据源使用&#xff1b;2.作为选择条件使用&#xff1b;二、按常见的子查询分类&#xff1a;1.由比较运算符引发的子查询&am…

【牛客 - 331G】炫酷数字(反素数打表 或 扩展埃式筛法,结论)

题干&#xff1a; 小希希望你构造一个最小的正整数&#xff0c;使得其有n个因子。 输入描述: 第一行一个整数T表示数据组数每组数据第一行输入一个正整数n&#xff0c;表示其因子数。n≤1,000,000n≤1,000,000T≤1,000,000T≤1,000,000输出描述: 输出一行一个整数&#xff…

【牛客 - 331J】炫酷数学(打表猜结论,按位枚举证明)

题干&#xff1a; 小希最近想知道一个东西&#xff0c;就是ABA|B(其中|为按位或)的二元组有多少个。 当然&#xff0c;直接做这个式子对小希来说太难了&#xff0c;所以小希改变了一些条件&#xff0c;她仅想知道其中A,B<NA,B<N的情况&#xff0c;其中N为2的幂次。 当然…

workerman mysql_workerman/mysql

Workerman/MySQL说明常驻内存的程序在使用mysql时经常会遇到mysql gone away的错误&#xff0c;这个是由于程序与mysql的连接长时间没有通讯&#xff0c;连接被mysql服务端踢掉导致。本数据库类可以解决这个问题&#xff0c;当发生mysql gone away错误时&#xff0c;会自动重试…

【LeetCode - 279】完全平方数(四平方和定理,数论,图论,dp)

题干&#xff1a; 给定正整数 n&#xff0c;找到若干个完全平方数&#xff08;比如 1, 4, 9, 16, ...&#xff09;使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 示例 1: 输入: n 12 输出: 3 解释: 12 4 4 4. 示例 2: 输入: n 13 输出: 2 解释: 13 …