链接: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 ;
}

最新文章

  1. 刷新拜拜~gulp-livereload
  2. JavaScript整合
  3. solr与.net系列课程(二)solr的配置文件及其含义
  4. JavaScript简易教程(转)
  5. 怎么样 解决nginx负载均衡的session共享问题呢
  6. Sqli-labs less 20
  7. zzuli oj 1146 吃糖果
  8. mysql如何删除重复记录
  9. wx.Notebook
  10. LeetCode Binary Search Summary 二分搜索法小结
  11. 使用RSA加密在Python中逆向shell
  12. Redis配置文件redis.conf详解
  13. 二十、Flyweight 享元模式
  14. SpringBoot整合Quartz定时任务 系统job Spring Boot教程 调度任务
  15. Linux-LVS为何不能完全替代DNS轮询
  16. java中调用groovy
  17. 在Ubuntu16.04上使用Open Grok
  18. java8 lambda 表达式
  19. .NET MVC 获取 当前请求的 控制器/视图/区域 的名字
  20. bash脚本编程学习笔记(一)

热门文章

  1. javascript——对象的概念——创建对象与销毁对象
  2. UML在软件开发中各个阶段的作用和意义
  3. Tiny4412 Uboot
  4. poj1753-Flip Game 【状态压缩+bfs】
  5. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
  6. Python-黑客-004 用Python构建一个SSH僵尸网络-02 手动与SSH交互
  7. Linux uname命令
  8. Luogu 4388 付公主的矩形
  9. Python程序设计7——文件读写
  10. JavaScript中的Array.prototype.slice.call()方法学习