当前位置: 首页 > news >正文

UVA1395 Slim Span(最小生成树)

*原题链接*(洛谷)

非常水的一道题。看见让求最小边权差值的生成树,很容易想到kruskal。

一个暴力的想法是以每条边为最小边跑一遍kruskal,然后统计答案。时间复杂度O(m^2logm),再看题中很小的数据范围和3s的时限。最后还真就过了。

不过我天真的想了一下二分最大差值,最后使时间复杂度成功升到O(m^2logmlogV)。但最后还是过了。。

#include<bits/stdc++.h>
using namespace std;
const int N=5e4+10;int read(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();return x*f;
}int n,m,fa[N];
struct node{int from,to,w;
}edge[N];
bool cmp(node a,node b){return a.w<b.w;
}int find(int x){if(x!=fa[x]) fa[x]=find(fa[x]);return fa[x];
}bool check(int k){for(int i=1;i<=m;i++){for(int j=1;j<=n;j++) fa[j]=j;int mn=edge[i].w,cnt=0;for(int j=i;j<=m;j++){if(edge[j].w-mn>k) break;int x=find(edge[j].from),y=find(edge[j].to);if(x==y) continue;cnt++,fa[x]=y;if(cnt==n-1) return true;}}return false;
}int main(){while(1){n=read(),m=read();if(!n&&!m) break;for(int i=1;i<=m;i++){int x=read(),y=read(),w=read();edge[i]={x,y,w};}sort(edge+1,edge+1+m,cmp);int l=0,r=10000,ans=-1;//我太蠢了,其实纯暴力就能水过while(l<=r){int mid=(l+r)>>1;if(check(mid)) ans=mid,r=mid-1;else l=mid+1;}cout<<ans<<endl;}return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity3d 以鼠标位置点为中心缩放视角(正交模式下)
  • 详解c++多态---上
  • 动态规划---不相交的线
  • 【前端】ref引用的作用
  • Golang、Python、C语言、Java的圆桌会议
  • Vue.js 计算属性
  • 数据结构:堆的算法
  • Nginx 文件名逻辑漏洞(CVE-2013-4547)
  • ESP8266做httpServer提示Header fields are too long for server to interpret
  • 【论文分享精炼版】 sNPU: Trusted Execution Environments on Integrated NPUs
  • NAT技术
  • vue3 +百度地图 实现 地点检索,输入联想,经纬度,逆地理编码,创建标记,label等
  • LAMP+WordPress
  • 15、Python如何获取文件的状态
  • 测试工具笔记
  • 【翻译】babel对TC39装饰器草案的实现
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Angular Elements 及其运作原理
  • CentOS6 编译安装 redis-3.2.3
  • chrome扩展demo1-小时钟
  • CSS 专业技巧
  • idea + plantuml 画流程图
  • Java基本数据类型之Number
  • node和express搭建代理服务器(源码)
  • PHP面试之三:MySQL数据库
  • Rancher-k8s加速安装文档
  • Redis中的lru算法实现
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 构建二叉树进行数值数组的去重及优化
  • 设计模式 开闭原则
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • ###C语言程序设计-----C语言学习(3)#
  • #、%和$符号在OGNL表达式中经常出现
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (C++17) std算法之执行策略 execution
  • (C语言)fread与fwrite详解
  • (八)Flink Join 连接
  • (附源码)计算机毕业设计高校学生选课系统
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (七)Knockout 创建自定义绑定
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (十三)Maven插件解析运行机制
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)visual stdio 书签功能介绍
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .Net 6.0 处理跨域的方式
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net framework profiles /.net framework 配置
  • .NET gRPC 和RESTful简单对比
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)