题目链接:https://vijos.org/p/1234

白天刚刚写完prim的算法,晚上就心血来潮的打了一道最小生成树的题

虽然有题解说可以用prim做,但是这道题明显是加最小的边,感觉kruskal方便多了

但是愉快的是我竟然不是一次过,最后发现是题意理解问题,我之前读了很多遍题,还是以为n朵云不用用完,但其实是n朵云要用完并成为k个棉花糖

首先可以知道的是,k个棉花糖中有k-1个是单个的云,因为单个的云就是不要花费的,所以生成树就是在剩下的n-k+1朵云中产生,然后这n-k+1朵云最多用n-k+1-1条边连接是最优的,所以其实就是kruskal选出n-k+1-1条边的最小价值

然后就是一个裸的kruskal了,然后由于很久没打kruskal了,我竟然自作聪明的加了vis数组,然后光荣爆零,最后删去vis,只用并查集判断就瞬间a了

果然是我太弱了吗

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#define maxn 10005
using namespace std; struct edge{
int u,v,w;
}e[*maxn]; int n,m,k,pos,tot,ans;
int head[maxn],fa[maxn]; int read(){
int xx=,ff=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')ff=-;ch=getchar();}
while(ch>=''&&ch<=''){xx=xx*+ch-'';ch=getchar();}
return xx*ff;
} void adde(int u,int v,int w){
e[++pos].u=u;
e[pos].v=v;e[pos].w=w;
} int comp(const void*a,const void*b){
return (*(struct edge*)a).w>(*(struct edge*)b).w?:-;
} int find_(int x){
if(fa[x]==x)return fa[x];
return fa[x]=find_(fa[x]);
} int main(){
scanf("%d",&n);m=read();k=read();
for(int i=;i<=m;i++){
int u,v,w;
u=read();v=read();w=read();
adde(u,v,w);
}
if(k>n){
printf("No Answer");return ;
}
for(int o=;o<=n;o++)
fa[o]=o;
qsort(e,m+,sizeof(e[]),comp);
for(int i=;i<=m;i++){
int u=e[i].u,v=e[i].v;
int fu=find_(u);int fv=find_(v);
if(fu!=fv){
fa[fu]=fv;
tot++;vis[fv]=;ans+=e[i].w;
}
if(tot>=n-k+-){
printf("%d",ans);return ;
}
}
printf("No Answer");
}

kruskal

【总结】

头可断,血可流,代码错不得

注意判断选入边的条件,理解并查集的运用,不能死记硬背

最新文章

  1. POJ 2318
  2. js、jquery验证时间格式
  3. 轻量级router[类似laravel router]
  4. LeetCode-334. Increasing Triplet Subsequence
  5. Sql server存储过程中常见游标循环用法
  6. sin=in.readLine();
  7. 【全面完美方案】iPhone 4S WiFi变灰 DIY修复方式
  8. Unity寻路的功能总结
  9. 请求与通配符 mime 映射相匹配。请求映射到静态文件处理程序。如果有不同的前提条件,请求将映射到另一个处理程序。
  10. Android 中使用MediaRecorder进行录像详解(视频录制)
  11. Java的socket服务UDP协议
  12. executssql 函数的每一句代码的意思
  13. python实现归并排序,归并排序的详细分析。
  14. 系列博文-Three.js入门指南(张雯莉)-照相机
  15. hql 函数大全
  16. Qt QLabel的使用
  17. python 排序 sort和sorted
  18. WebFrom 小程序【条件查询】
  19. Asp.Net构架(Http请求处理流程)、(Http Handler 介绍)、(HttpModule 介绍)
  20. Java断言绝对不是鸡肋

热门文章

  1. FCC成都社区&#183;前端周刊 第 1 期
  2. 前端每日实战:4# 视频演示如何用纯 CSS 创作一个金属光泽 3D 按钮特效
  3. C++对拍
  4. win10执行Tensorflow,总是会报错“DLL load failed: 找不到指定的模块”的解决方式----终极版方式
  5. PAT-字符串处理-B1006 换个格式输出整数 (15分)
  6. 报错: raise ImproperlyConfigured(&#39;mysqlclient 1.3.13 or newer is required; you have %s.&#39; % Database.__version__)
  7. 小程序session_key失效解决方案、后台解密个人数据信息
  8. Simulink仿真入门到精通(十七) Simulink代码生成技术详解
  9. selenium 爬boss
  10. JVM 参数及各部分含义(转)