jzoj1751-Span(每日C组)【并查集,贪心】

题目

有n个村,m条路,给n-1条路刷油漆连接n个村,让最长边与最短边的长度差最小。


输入输出(建议跳过)

Input

第一行给出一个数字TOT,代表有多少组数据,Tot<=6
对于每组数据,首先给出N,M
下面M行,每行三个数a,b,c代表a村与b的村道路距离为c.

Output

输出最小差值,如果无解输出”-1”.

Sample Input

1
4 5
1 2 3
1 3 5
1 4 6
2 4 6
3 4 7

Sample Output

1


解题思路

这道题数据比较小,首先记录下所有边,然后排序。枚举最大边,然后用并查集确定“村村通”的关系,然后取最小值。


代码

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
struct line{int x,y,w;
}a[4951];//记录边
int father[101],n,mins,t,m;
bool cmp(line dx,line dy)
{return dx.w>dy.w;
}//快排用
int find(int x)
{if (x!=father[x]) return father[x]=find(father[x]);return x;
}//并查集
void d(int x,int y)
{father[find(x)]=find(y);
}//连接
int main()
{scanf("%d",&t);for (int ti=1;ti<=t;ti++){scanf("%d%d",&n,&m);for (int i=1;i<=m;i++){scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].w);}sort(a+1,a+1+m,cmp);//快排mins=214748364;for (int i=1;i<=m;i++)//枚举最小边{int j=i+1,k=1;//j表示枚举到的边,k表示选择了的边for (int q=1;q<=n;q++) father[q]=q;d(a[i].x,a[i].y);while (j<=m){if (find(a[j].x)!=find(a[j].y))//如果没连接{d(a[j].x,a[j].y);//连接k++;//记录}j+=1;//下一条if (k==n-1) break;//边数足够}if (j-1<=m && k==n-1)mins=min(mins,a[i].w-a[j-1].w);//取最小}if (n==2 && m==1 && a[1].x!=a[1].y) printf("0");//特殊情况判断else if (mins==214748364) printf("-1\n");//无法连接else printf("%d\n",mins);//输出}
}

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

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

相关文章

线程优先级

MAX_PRIORITY&#xff1a;10 MIN _PRIORITY&#xff1a;1 NORM_PRIORITY&#xff1a;5 -->默认优先级 2.如何获取和设置当前线程的优先级&#xff1a; getPriority():获取线程的优先级 setPriority(int p):设置线程的优先级 说明&#xff1a;高优先级的线程要抢占低优先级线…

通俗理解决策树算法中信息增益的

转载自 通俗理解决策树算法中信息增益的 通俗理解决策树算法中的信息增益 在决策树算法的学习过程中&#xff0c;信息增益是特征选择的一个重要指标&#xff0c;它定义为一个特征能够为分类系统带来多少信息&#xff0c;带来的信息越多&#xff0c;说明该特征越重要&#x…

列表

# 列表 a [20, 40] a a [50] # 将原列表的元素和新列表的元素依次复制到新的列表对象中 a.extend([10, 20]) # 将目标列表的所有元素添加到本列表的尾部&#xff0c;属于原地操作&#xff0c;不创建新的列表对象。 a.insert(2, 100) b a * 3 # 乘法扩展 生成一个新列表 …

DDD理论学习系列(6)-- 实体

1.引言 实体对应的英语单词为Entity。提到实体&#xff0c;你可能立马就想到了代码中定义的实体类。在使用一些ORM框架时&#xff0c;比如Entity Framework&#xff0c;实体作为直接反映数据库表结构的对象&#xff0c;就更尤为重要。特别是当我们使用EF Code First时&#xf…

班级日常 | 一天一瞬间!

点击上方蓝色关注我们&#xff01;欢迎来到今天的“一天一瞬间”专栏在学习word操作时&#xff0c;同学们的兴趣还是较高的&#xff0c;但是&#xff0c;比起“一天一个黑科技”来说&#xff0c;还是差了许多&#xff01;前面两天都是学的一些简单的DOS命令&#xff0c;比如进某…

jzoj1370-飞船【RMQ初见】

前言 RMQ就是一个在一个序列中来多次询问某段的最大值的快速的方法。其他自行度娘 正题 题目 一些成直线的星星&#xff0c;给出m段询问&#xff0c;求一段距离间最大的星星 输入输出与样例&#xff08;建议无视&#xff09; 输入 第一行输入N,M 接下来一行N个整数&#…

double类型进行比较排序

不用两个double直接进行强转是为了防止精度的损失 方式一&#xff1a; Overridepublic int compareTo(Object o) { // System.out.println("**************");if(o instanceof Goods){Goods goods (Goods)o;//方式一&#xff1a;if(this.price > goods.p…

ASP.NET Core Web 资源打包与压缩

本文将介绍使用的打包和压缩的优点&#xff0c;以及如何在ASP.NET Core应用程序中使用这些功能。 概述 在ASP.Net中可以使用打包与压缩这两种技术来提高Web应用程序页面加载的性能。通过减少从服务器请求的次数和减少资源文件的体积来提高加载性能。 打包是一地将多个文件&a…

班级日常分享 | 一天一瞬间!

点击上方蓝色关注我们&#xff01;介于最近同学们的学习劲头十足的样子&#xff0c;我和丁老师商量决定晚上不布置作业&#xff0c;看一部电影放松放松&#xff01;昨晚下晚自习后&#xff0c;零零散散的还有一部分同学在教室里面学习&#xff0c;值班老师都催促多次&#xff0…

jzoj1371-假期【RMQ】

前言 上一篇RMQ博客&#xff1a;http://blog.csdn.net/mr_wuyongcong/article/details/79253383 正题 题目 要给奶牛放假&#xff0c;每天有一定的快乐值&#xff08;有可能是负数&#xff09;&#xff0c;假期不能小于p天或大于q天&#xff0c;求最大快乐值 输入 第一行&a…

句法分析(syntactic parsing)在NLP领域的应用是怎样的

转载自 句法分析&#xff08;syntactic parsing&#xff09;在NLP领域的应用是怎样的 句法分析&#xff08;syntactic parsing&#xff09;在NLP领域的应用是怎样的&#xff1f; 文章整理自郭江师兄问题回答&#xff08;被收录于知乎编辑推荐&#xff09;&#xff01;已取得…

新的学期、新的开始、新的付出、新的收获!

点击上方蓝色关注我们&#xff01;本文原创&#xff1a;王晓丹同学初次&#xff0c;我漫步在静静的校园&#xff0c;深情的黄昏&#xff0c;显得格外惹人喜爱。哇&#xff01;那是什么&#xff1f;我情不自禁的喊了出来&#xff0c;一颗石榴树 &#xff0c;引起了我满满的回忆&…

ASP.NET Core Web API 最小化项目

ASP.NET Core中默认的ASP.NET Core 模板中有Web API 模板可以创建Web API项目。 有时&#xff0c;只需要创建一个API&#xff0c;不需要关心Razor&#xff0c;本地化或XML序列化。通过删除无用的NuGet软件包和代码&#xff0c;可以提高 API 的加载时间并减少部署包大小。 新建…

【jzoj】2018.2.5NOIP普及组——C组模拟赛

前言 今天第一次正式C组题&#xff0c;不过……比较恐怖。 正题 题目1&#xff1a;公牛和母牛&#xff08;jzoj1292&#xff09; 有n头牛&#xff0c;可以是公牛或母牛&#xff0c;每头公牛之间至少得有k头母牛。求方案数。 输入输出&#xff08;建议跳过&#xff09; Inpu…

LinkedHashSet VS HashSet

LinkedHashSet的使用 LinkedHashSet作为HashSet的子类&#xff0c;在添加数据的同时&#xff0c;每个数据还维护了两个引用&#xff0c;记录此数据前一个 数据和后一个数据。 优点&#xff1a;对于频繁的遍历操作&#xff0c;LinkedHashSet效率高于HashSet

oop

# 一个典型的类的定义 class Student:def __init__(self, name, score): # 构造方法第一个参数必须为 selfself.name name # 实例属性self.score scoredef say_score(self): # 实例方法print(self.name, 的分数是&#xff1a;, self.score)s1 Student(张三, 80) # s1 是…

隐马尔科夫模型-基本模型与三个基本问题

转载自 隐马尔科夫模型-基本模型与三个基本问题 隐马尔科夫模型-基本模型与三个基本问题 这次学习会讲了隐马尔科夫链&#xff0c;这是一个特别常见的模型&#xff0c;在自然语言处理中的应用也非常多。 常见的应用比如分词&#xff0c;词性标注&#xff0c;命名实体识别等…

日常技术分享 : 一定要注意replcaceAll方法,有时候会如你所不愿!

点击上方蓝色关注我们&#xff01;今天&#xff0c;踩过了一个雷&#xff0c;特此整理了一下&#xff0c;以防大家也被中招&#xff01;事情是这样的&#xff0c;在做一个项目时&#xff0c;需要用到String类的replcaceAll方法&#xff0c;可以这么说&#xff0c;该方法就是替换…

在微服务中如何管理数据

来自Stitch Fix团队的工程副总裁Randy Shoup在QCon纽约2017会议上讨论了如何在基于微服务的应用中管理数据和隔离持久化。他还介绍了将事件&#xff08;Event&#xff09;作为微服务的第一类构造。他介绍自己的团队将机器学习技术应用到了业务的各个组成部分&#xff0c;比如购…