UVA1395 (最苗条的最小生成树)
链接
https://vjudge.net/problem/UVA-1395
代码
#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define ll long long
const int maxn=5e4+;
int par[maxn];
int rank1[maxn]; void init(int n) //初始化
{
for(int i=;i<=n;i++)
{
par[i]=i;
rank1[i]=;
}
}
int find(int x)
{
if(par[x]==x)
{
return x;
}
else
{
return par[x]=find(par[x]);
}
}
void unite(int x,int y)
{
x=find(x);
y=find(y);
if(x==y)
return ;
if(rank1[x]<rank1[y])
{
par[x]=y;
}
else
{
par[y]=x;
}
if(rank1[x]==rank1[y])
rank1[x]++;
}
int n,m;
struct edge{
int x,y,cost;
}e[];
bool cmp(const edge e1,const edge e2)
{
return e1.cost<e2.cost;
}
int main()
{
while(cin>>n>>m&&(n||m))
{
for(int i=;i<=m;i++)
{
cin>>e[i].x>>e[i].y>>e[i].cost;
}
int res=-;
sort(e+,e+m+,cmp);
for(int i=;i<=m;i++)
{
init(n);
int num=;
for(int j=i;j<=m;j++)
{
edge e1=e[j];
int x=find(e1.x);
int y=find(e1.y);
if(x!=y)
{
num++;
unite(e1.x,e1.y);
if(num==n-)
{
if(res==-)
res=e[j].cost-e[i].cost;
else
res=min(res,e[j].cost-e[i].cost); }
}
// cout<<i<<" "<<num<<"\n";
}
}
cout<<res<<"\n";
} return ;
}
UVA1395 (最苗条的最小生成树)的更多相关文章
- UVA1395 Slim Span(枚举最小生成树)
题意: 求最小生成树中,最大的边减去最小的边 最小值. 看了题解发现真简单=_= 将每条边进行从小到大排序,然后从最小到大一次枚举最小生成树,当构成生成树的时候,更新最小值 #include < ...
- 洛谷 题解 UVA1395 【苗条的生成树 Slim Span】
[题意] 给出一个\(n(n<=100)\)个节点的的图,求最大边减最小边尽量小的生成树. [算法] \(Kruskal\) [分析] 首先把边按边权从小到大进行排序.对于一个连续的边集区间\( ...
- UVA 1395 苗条的生成树(最小生成树+并查集)
苗条的生成树 紫书P358 这题最后坑了我20分钟,怎么想都对了啊,为什么就wa了呢,最后才发现,是并查集的编号搞错了. 题目编号从1开始,我并查集编号从0开始 = = 图论这种题真的要记住啊!!题目 ...
- uva1395 枚举不同区间的最小生成树
枚举起点,求最小生成树.如果当前不能实现n个点连通,直接不再枚举. AC代码: #include<cstdio> #include<algorithm> using names ...
- uva1395 - Slim Span(最小生成树)
先判断是不是连通图,不是就输出-1. 否则,把边排序,从最小的边开始枚举最小生成树里的最短边,对每个最短边用Kruskal算法找出最大边. 或者也可以不先判断连通图,而是在枚举之后如果ans还是INF ...
- 洛谷 UVA1395 苗条的生成树 Slim Span
题目链接 题目描述 求所有生成树中最大边权与最小边权差最小的,输出它们的差值. 题目分析 要求所有生成树中边权极差最小值,起初令人无从下手.但既然要求所有生成树中边权极差最小值,我们自然需要对每一棵生 ...
- Uva1395 POJ3522 Slim Span (最小生成树)
Description Given an undirected weighted graph G, you should find one of spanning trees specified as ...
- poj3522 苗条树(极差最小生成树)
给你N个点和M条边 要求你求出一个生成树使得这个生成树里边权极差最小 做法① n*m做法 当最小的边已知的时候这个生成树就确定 所以最大的边也确定了 于是我们每次枚举最小的边 然后用kruskal做一 ...
- 【Uvalive4960】 Sensor network (苗条树,进化版)
[题意] 给出N个点,M条边,问这N个点形成的生成树的最大权值边-最小权值边的最小值 InputThe input consists of several test cases, separated ...
随机推荐
- [软件分享]Office Tool Plus,一个OFFICE 管理、下载、安装器
转载自我的博客:https://blog.ljyngup.com 教程摘自官方教程. 出事与本人无关 官网:https://otp.landian.vip/zh-cn/ Office Tool Plu ...
- mysql 查询指定数据库所有表, 指定表所有列, 指定列所有表 所有外键及索引, 以及索引的创建和删除
查询指定 数据库 中所有 表 (指定数据库的,所有表) // 可以把 TABLE_NAME 换成 * 号, 查看更丰富的信息 SELECT TABLE_NAME FROM information_sc ...
- OSCP收集
推荐书籍: 渗透测试:黑客动手入门(+强烈推荐初学者) 黑客:剥削的艺术,第二版 Rtfm:Red Team Field手册 Web应用程序黑客手册:查找和利用安全漏洞 黑客手册:实用指南渗透测试 基 ...
- 查看Linux系统内存、CPU、磁盘使用率和详细信息
一.查看内存占用 1.free # free -m 以MB为单位显示内存使用情况 [root@localhost ~]# free -m total used free shared buff/cac ...
- if-else连用时的陷阱
近日,在实现<The C Programing Language>上的一个练习题时,写出了下面一段代码 ; i<=right; i++) { ) ) swap(v, i, ++la ...
- KMP算法Next()函数的一个应用
转载:http://www.cnblogs.com/vongang/archive/2012/05/04/2483419.html 记一个KMP算法的应用,经典的KMP算法详解还是看这里 问题:给一个 ...
- html语义化的意义
易于用户阅读,样式丢失的时候能让页面呈现清晰的结构. 有利于SEO,搜索引擎根据标签来确定上下文和各个关键字的权重. 方便其他设备解析,如盲人阅读器根据语义渲染网页 有利于开发和维护,语义化更具可读性 ...
- 【爬虫】 爬虫请求json数据,返回乱码问题的解决
from django.http import JsonResponse from rest_framework.utils import json from utils import request ...
- Jmeter后置处理器,正则表达式提取器的使用
[使用场景]:下一个请求参数需要从上一个请求的响应数据中获取 [jmeter正则表达式说明]:使用perl正则表达式(可参考:http://www.runoob.com/perl/perl-regul ...
- Python核心编程:《8个实践性建议》
前言 我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑踩过的雷总结出来的,现在在这里分享一下给大家,因为很多伙伴是接触P ...