题目链接:http://poj.org/problem?id=3522思路:题目要求最小生成树中最大边与最小边的最小差值,由于数据不是很大,我们可以枚举最小生成树的最小边,然后kruskal求最小生成树,直到不能生成生成树为止,然后取最小的差值即可。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAXN 111
#define inf 1<<30 struct Edge{
int u,v;
int len;
}edge[MAXN*MAXN];
int parent[MAXN];
int n,m; void Initiate()
{
for(int i=;i<=n;i++){
parent[i]=i;
}
} int Find(int x)
{
if(x==parent[x]){
return parent[x];
}
parent[x]=Find(parent[x]);
return parent[x];
} void Union(int u,int v)
{
int r1=Find(u),r2=Find(v);
if(r1==r2)return ;
parent[r1]=r2;
} int cmp(const Edge &p,const Edge &q)
{
return p.len<q.len;
} int Kruskal(int id)
{
int count=,MIN=inf,MAX=-inf;
for(int i=;i<m;i++){
if(edge[i].len<edge[id].len)continue;
int u=edge[i].u,v=edge[i].v;
if(Find(u)!=Find(v)){
MIN=min(MIN,edge[i].len);
MAX=max(MAX,edge[i].len);
count++;
Union(u,v);
if(count==n-)return MAX-MIN;
}
}
return -;
} int main()
{
while(~scanf("%d%d",&n,&m)){
if(n==&&m==)break;
for(int i=;i<m;i++){
scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].len);
}
sort(edge,edge+m,cmp);
int ans=inf;
for(int i=;i<m;i++){
Initiate();
int tmp=Kruskal(i);
if(tmp==-)break;
ans=min(ans,tmp);
}
if(ans!=inf){
printf("%d\n",ans);
}else
printf("-1\n");
}
return ;
}

poj 3522(最小生成树应用)的更多相关文章

  1. poj 3522 Slim Span (最小生成树kruskal)

    http://poj.org/problem?id=3522 Slim Span Time Limit: 5000MS   Memory Limit: 65536K Total Submissions ...

  2. POJ 3522 Slim Span 最小生成树,暴力 难度:0

    kruskal思想,排序后暴力枚举从任意边开始能够组成的最小生成树 #include <cstdio> #include <algorithm> using namespace ...

  3. POJ 3522 Slim Span(极差最小生成树)

    Slim Span Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9546   Accepted: 5076 Descrip ...

  4. POJ 3522 ——Slim Span——————【最小生成树、最大边与最小边最小】

    Slim Span Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 7102   Accepted: 3761 Descrip ...

  5. POJ 3522 - Slim Span - [kruskal求MST]

    题目链接:http://poj.org/problem?id=3522 Time Limit: 5000MS Memory Limit: 65536K Description Given an und ...

  6. Poj(3522),UVa(1395),枚举生成树

    题目链接:http://poj.org/problem?id=3522 Slim Span Time Limit: 5000MS   Memory Limit: 65536K Total Submis ...

  7. poj 2349(最小生成树应用)

    题目链接:http://poj.org/problem?id=2349 思路:由于有S个专门的通道,我们可以先求一次最小生成树,然后对于最小生成树上的边从大到小排序,前S-1条边用S-1个卫星通道连接 ...

  8. POJ 3522 Slim Span 最小差值生成树

    Slim Span Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3522 Description Gi ...

  9. POJ 3522 Slim Span

    题目链接http://poj.org/problem?id=3522 kruskal+并查集,注意特殊情况比如1,0 .0,1.1,1 #include<cstdio> #include& ...

随机推荐

  1. 使用Apriori算法和FP-growth算法进行关联分析

    系列文章:<机器学习实战>学习笔记 最近看了<机器学习实战>中的第11章(使用Apriori算法进行关联分析)和第12章(使用FP-growth算法来高效发现频繁项集).正如章 ...

  2. ssh 安装

    一 ssh 1.查看ssh服务的状态 输入以下命令: sudo service sshd status 如果出现 Loaded: error (Reason: No such file or dire ...

  3. OpenGL学习笔记之了解OpenGL

    OpenGL(全写Open GraphicsLibrary)是个定义了一个跨编程语言.跨平台的编程接口规格的专业的图形程序接口.它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库. 说 ...

  4. 在Action中以Struts2的方式输出JSON数据

    参考地址;http://blog.csdn.net/itdada/article/details/21344985

  5. TF-IDF与余弦相似性的应用(一):自动提取关键词

    这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题. 有一篇很长的文章,我要用计算机提取它的关键词(Automatic Keyphrase extraction),完全不加以人工干预,请问怎样才 ...

  6. android应用程序的安装方式与原理

    android应用程序的安装方式与原理 四种安装方式: 1.系统应用安装――开机时完成,没有安装界面 2.网络下载应用安装――通过market应用完成,没有安装界面 3.ADB工具安装――没有安装界面 ...

  7. 【Symmetric Tree】cpp

    题目: Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). F ...

  8. 【Binary Tree Preorder Traversal】cpp

    题目: Given a binary tree, return the preorder traversal of its nodes' values. For example:Given binar ...

  9. C#日志编写

    在一个完整的信息系统里面,日志系统是一个非常重要的功能组成部分.它可以记录下系统所产生的所有行为,并按照某种规范表达出来.我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信 ...

  10. transitionend 事件的兼容

    google :webkitTransitionEnd firefox :transitionend ie       : MSTransitionEnd