UVA - 1395 Slim Span (最小生成树Kruskal)
Kruskal+并查集。
点很少,按边权值排序,枚举枚举L和R,并查集检查连通性。一旦连通,那么更新答案。
判断连通可以O(1),之前O(n)判的,第一次写的过了,后来T。。
#include<bits/stdc++.h>
using namespace std;
const int maxn = ;
const int maxe = maxn*maxn>>;
int n,m; int u[maxe],v[maxe],w[maxe]; int pa[maxn]; inline bool cmp(int a,int b) { return w[a]<w[b]; }
int r[maxe]; inline void idxSort()
{
for(int i = ; i < m; i++) r[i] = i;
sort(r,r+m,cmp);
} int Find(int x) { return x==pa[x]?x:pa[x]=Find(pa[x]); }
int cnt,ans; inline void Union(int a,int b)
{
int s1 = Find(a),s2 = Find(b);
if(s1 != s2){
pa[s1] = s2,cnt--;
}
} inline void initUFS() { for(int i = ; i <= n; i++) pa[i] = i; cnt = n-; } const int INF = 0x3f3f3f3f; int main()
{
//freopen("in.txt","r",stdin);
while(scanf("%d%d",&n,&m),n){
for(int i = ; i < m; i++)
scanf("%d%d%d",u+i,v+i,w+i); idxSort();
ans = INF;
for(int i = ; i < m; i++){
initUFS();
for(int j = i; j < m; j++){
int R = r[j];
Union(u[R],v[R]);
if(!cnt) {
ans = min(ans,w[R]-w[r[i]]); break;
}
}
}
printf("%d\n",ans==INF?-:ans);
}
return ;
}
UVA - 1395 Slim Span (最小生成树Kruskal)的更多相关文章
- UVA 1395 Slim Span 最小生成树
题意: 给你一个图,让你求这个图中所有生成树中满足题目条件的,这个条件是生成树中最长边与最短边的差值最小. 思路: 根据最小瓶颈生成树的定义:在一个有权值的无向图中,求一个生成树最大边的权值尽量小.首 ...
- UVA 1395 Slim Span (最小生成树,MST,kruscal)
题意:给一个图,找一棵生成树,其满足:最大权-最小权=最小.简单图,不一定连通,权值可能全相同. 思路:点数量不大.根据kruscal每次挑选的是最小权值的边,那么苗条度一定也是最小.但是生成树有多棵 ...
- poj 3522 Slim Span (最小生成树kruskal)
http://poj.org/problem?id=3522 Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Submissions ...
- UVa 1395 - Slim Span(最小生成树变形)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVa 1395 Slim Span【最小生成树】
题意:给出n个节点的图,求最大边减最小边尽量小的值的生成树 首先将边排序,然后枚举边的区间,判定在该区间内是否n个点连通,如果已经连通了,则构成一颗生成树, 则此时的苗条度是这个区间内最小的(和kru ...
- UVa 1395 Slim Span (最小生成树)
题意:给定n个结点的图,求最大边的权值减去最小边的权值最小的生成树. 析:这个和最小生成树差不多,从小到大枚举左端点,对于每一个左端点,再枚举右端点,不断更新最小值.挺简单的一个题. #include ...
- UVa 1395 Slim Span
问题:给出一个n结点的图,求最大边与最小边差值最小的生成树 my code: #include <iostream> #include <cstdio> #include &l ...
- UVA1395 Slim Span(kruskal)
题目:Slim Span UVA 1395 题意:给出一副无向有权图,求生成树中最小的苗条度(最大权值减最小权值),如果不能生成树,就输出-1: 思路:将所有的边按权值有小到大排序,然后枚举每一条边, ...
- Slim Span(Kruskal)
题目链接:http://poj.org/problem?id=3522 Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Subm ...
随机推荐
- java集合框架之聚合操作stream
参考http://how2j.cn/k/collection/collection-aggregate/702.html#nowhere 聚合操作 JDK8之后,引入了对集合的聚合操作,可以非常容易的 ...
- JAVA实现DIJKSTRA算法
import java.util.Queue; import java.util.LinkedList; public class dijkstra{ public static void main( ...
- HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质
小希的迷宫 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一 ...
- http协议之版本差异(2)
—————————————HTTP1.0/HTTP1.1—————————————— 建立连接方面 HTTP/1.0 每次请求都需要建立新的TCP连接,连接不能复用.HTTP/1.1 新的请求可以在上 ...
- 洛谷 - P5030 - 长脖子鹿放置 - 二分图最大独立集
https://www.luogu.org/problemnew/show/P5030 写的第一道黑色题,图建对了. 隐约觉得互相攻击要连边,规定从奇数行流向偶数行. 二分图最大独立集=二分图顶点总数 ...
- Server.MapPath()相关
Server.MapPath()相关 1. Server.MapPath()介绍 Server.MapPath(string path)作用是返回与Web服务器上的指定虚拟路径相对应的物理文 ...
- lightoj1010【LCS】
题意: 求最长公共子序列,并且这个子序列是字典序最小. 思路: LCS附一个值,dp[i][j].first代表以i,j的LCS的长度,dp[i][j].second代表LCS结尾元素,然后利用路径输 ...
- Unity开发MMOARPG游戏解决方案
http://www.csdn.net/article/2015-05-07/2824634 天神互动是一家已经上市的以研发MMOARPG游戏为主的技术公司,<苍穹变>是天神互动研发的第一 ...
- Some JPR highlights (JPR 2019 March)
Journal Name:Journal of Proteome Research Issue:2019 March Shared by: Weining Zhao 1. Acetylome: ...
- LVS 负载均衡器总结
下面部分原理部分,是从网上摘录,源网址已经无从获取,我将其中一小部分模糊的说明加入了一些自己的理解,仅最大可能让全文容易阅读,也方便自己以后参考,若你是大牛希望能给我一些宝贵的建议,将理解有误的地方加 ...