牛客寒假算法基础集训营4 G Applese 的毒气炸弹
2024-09-03 20:03:56
链接:https://ac.nowcoder.com/acm/contest/330/G
来源:牛客网
众所周知,Applese 是个很强的选手,它的化学一定很好。
今天他又AK了一套题觉得很无聊,于是想做个毒气炸弹玩。
毒气炸弹需要 k 种不同类型元素构成,Applese一共有 n 瓶含有这些元素的试剂。
已知元素混合遵循 m 条规律,每一条规律都可以用 "x y c" 描述。
表示将第 x 瓶试剂混入第 y 瓶试剂或者把第 y 瓶试剂混入第 x 瓶试剂,需要消耗 c 的脑力。
特别地,除了这 m 条规律外,Applese 可以将任意两瓶相同元素的试剂混合,且不需要消耗脑力。
Applese 想要配出毒气炸弹,就需要使 S 中含有 1∼k
把元素当作节点,需要k种元素。涉及合并。然后最小生成树
复习:记录边权,排序,选k-1条边
find函数已经忘了。 初始化fa数组 为 -1
find(x) 如果 fa[x]==-1 说明x就是根
否则 return fa[x]=find(fa[x]) 也就是一直往上查找
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
int kind[maxn],n,m,k,fa[maxn]; struct Edge{
int u,v,c;
}edge[maxn]; bool cmp(Edge a,Edge b) {
return a.c<b.c;
} int find(int x) {
if(fa[x]==-) return x;
else return fa[x]=find(fa[x]);
} void Union(int x,int y) {
int fx=find(x);
int fy=find(y);
fa[fx]=fy;
} int main() {
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++) scanf("%d",&kind[i]);
int id=;
long long ans=;
while(m--) {
scanf("%d%d%d",&edge[id].u,&edge[id].v,&edge[id++].c);
}
memset(fa,-,sizeof(fa));
sort(edge,edge+id,cmp);
int num=;
for(int i=;i<id;i++) {
if(find(kind[edge[i].u])==find(kind[edge[i].v])) continue;
Union(kind[edge[i].u],kind[edge[i].v]);
ans+=edge[i].c;
if(++num==k-) break;
}
if(num==k-) printf("%lld",ans);
else printf("-1");
return ;
}
最新文章
- 刷新拜拜~gulp-livereload
- JavaScript整合
- solr与.net系列课程(二)solr的配置文件及其含义
- JavaScript简易教程(转)
- 怎么样 解决nginx负载均衡的session共享问题呢
- Sqli-labs less 20
- zzuli oj 1146 吃糖果
- mysql如何删除重复记录
- wx.Notebook
- LeetCode Binary Search Summary 二分搜索法小结
- 使用RSA加密在Python中逆向shell
- Redis配置文件redis.conf详解
- 二十、Flyweight 享元模式
- SpringBoot整合Quartz定时任务 系统job Spring Boot教程 调度任务
- Linux-LVS为何不能完全替代DNS轮询
- java中调用groovy
- 在Ubuntu16.04上使用Open Grok
- java8 lambda 表达式
- .NET MVC 获取 当前请求的 控制器/视图/区域 的名字
- bash脚本编程学习笔记(一)
热门文章
- javascript——对象的概念——创建对象与销毁对象
- UML在软件开发中各个阶段的作用和意义
- Tiny4412 Uboot
- poj1753-Flip Game 【状态压缩+bfs】
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
- Python-黑客-004 用Python构建一个SSH僵尸网络-02 手动与SSH交互
- Linux uname命令
- Luogu 4388 付公主的矩形
- Python程序设计7——文件读写
- JavaScript中的Array.prototype.slice.call()方法学习